@Nico: Thanks for the example, I will look into it.
@Benjamin: I've played with the idea of SplObjectStorage several times already. It has some disadvantages. First, contrary to your and my first belief it is slower, not faster than using an array with spl_object_hash. Secondly it results in additional references to the objects that you need to be aware of and can potentially prevent the objects from being garbage collected.
I mean if I store some associated information to an entity with the spl_object_hash => value information there is no reference to the actual object. Using SplObjectStorage would result in object references being stored. I've always tried to keep the locations where Doctrine keeps references to objects to a minimum to not provoke unnecessary potential memory leaks.
If you would like to make your own performance tests of SplObjectStorage vs array + spl_object_hash I would be glad to see your results!