You mentioned that the fact that PushBitmap() Pushes elements onto a queue,
later in the render pipeline it would be hard to know if a bitmap was required
and may be evicted in error
Could you not push a value, say the frame count with the PushBitmap() call
That way later in the pipeline you could easily see which assets had been "touched"
It would mean you would need a global "frame count"
Hope this make sense & isn't too garbled :)