Yes IMO it should be handled like I described, by default if you set the z-order of the root node in a hierarchy, then a child of that root should be in front of the root/parent and if that child has a child node then it should be in front of its parent as well.
So in short by default children are rendered in front of parents.
Then you should be able to set any node to render behind its parent (instead of the in front default), this should then update the render order of all its children too.
[edit]
One problem this doesn't solve is that of drawing order for siblings, so if a parent has 2 children how to determine which child will be drawn on top.