In practice, this is pretty rare and I was only able to see it when using an unpacked tilesheet:
As can be seen in the above example, the shield is getting pushed back a few layers. I think the solution would be to preserve the hero layer order during the "calculate priorities" stage of MapRenderer, without being too inefficient.
Since packing the tileset used in the example also "fixes" this, I'm considering this issue low priority for the time being.