I think I have a handle on it now. The thing that was really confusing me was that Nodes didn't have layers. But I realized I can just write a function to recursively go down through all the Drawables attached to a node and change their layer.
static void SetNodeLayer(SharedPtr<Node> node, int layer)
PODVector <StaticSprite2D*> sprites;
for (int i=0;i<sprites.Size();i++)
So effectively, I can act as if a node has a layer by assigning all the sprites under that node to the same layer. And if there is layering that needs to happen within those sprites - I'll use the SetOrderInLayer to arrange them. I think that will handle all the cases I have.