I am going with the assumption that I should duplicate the data, for the reasons you describe Sean. But my problem is the data needs to be in different orders for different systems, so when I duplicate it I end up having to jump all over memory to reorder it ( it's never a linear memcpy ). I think that's probably inevitable, and I am trying to consider the best way to do it.
@Waterlimon - That's an interesting thought, regarding keeping it sorted over multiple frames. However, although it's true that the order is unlikely to change, the data itself almost certainly will ( assuming these are all dynamic objects ), so I still need to re-write data into the sorted "slots" each frame. I can cache the sorted index to avoid running the algorithm, but that's almost identical to the second method I was discussing ( which never actually entails a sort ). Unless I am misunderstanding your suggestion?