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 :)