If we don't have direct operations on aggregate elements but instead have to do a fetch and perform the operation on what we fetch, it means we have to create a temporary PMC for each 'fake' entry, one potentially with a fair amount of knowledge about how the aggregate works, which means that every aggregate will need to provide two vtables, one for itself and one for an aggregate entry.
I don't see the point here especially why we would need a temporary PMC. If we have an array of packed ints, I just need a pointer to the element to work on it. This is very similar to the C<key> opcode I had in some of my proposals.
We could also have n reserved keyed PMCs that are used ONLY with the prep keyed functions (where n is the greatest number of keyed items in any op (3, I think)).
Matt