Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
What about having 2 render systems, one which cares about the DrawOnTop component and another one which will render the non matching entities. Adding or removing this component will just unregister the entity from the system list and vice versa.
the layer idea sounds really interesting. I am using Tiled as a map editor and all my interactive entities are described in an object layer (baddies, items, light sources, npc etc...), it would be easy to just load the correct object layer based on a "chapter" reference, ie: mapLoader.load('map.tmx', 'chapter1') and then loading the corresponding object layer.