Changing the zorder of the first object to 1 AFTER creation of the second object results in the first object being drawn on top of the second. Success. Still interesting.
I see what you are doing here (isn't this a drop shadow for text?)... I did something similar (but used a clone for the shadow), in my case I have a counter (zordertop) which I keep as a track for the zorder of the topmost object over which I want to put stuff, so I just placed
text_shadow.zorder = zordertop + 3
text.zorder = zordertop + 4
But you don't have a fixed reference, and you are placing everything in a container, if this container is a surface results will be pretty unpredictable. Otherwise you could use
text.zorder = (text_shadow.zorder + 1)