Thanks for both of your replies. Sorry to both of you that I didn't really make my own situation clear and probably ended up wasting your time as a result. I'm making a cutout character with a 2D skeleton, and because of the hierarchy of the bones, the arm that is behind the character will be rendered above the back legs and it should be behind. If I use the Z_Index to send the arm back to render behind the legs, the arm will render behind other elements in the scene when using Y sort like in the gif in the op where the character's axe renders behind the mushroom.
Megalomaniak I read that, but it didn't seem like the solution for me and I was very sleep deprived and didn't realize that that reply was from the OP and not someone else. Maybe it had something to do with the usernames in github and godot forums having different studio names. I was hoping that the OP had found a non-coding solution for this, like a setting in the top node of the character scene that would make all of its children render in the same Z index when placed in other scenes so that other characters or environment sprites wouldn't be sandwiched between the sprites in this character. I don't want to have to have code on every different type of character to move sprites back a few draw indexes.
cybereality I don't think CanvasLayers will work for me. As far as I know, canvas layers won't work with Y-sorting. I suppose I could roll my own Y sort by changing each character's canvas layer's layer index, but I was really hoping that there was an out of the box solution for this. They also don't work with Z_indexs, so if I wanted to have some things in the environment below the characters and some above, they would also have to be on different layers. The other thing is, is having a ton of canvas layers performant? We're making a zombie game, so there could be upwards of 100 different canvas layers on the screen at once. I don't know that much about rendering in godot and I might be very wrong, but I feel like that would be a no-no.
I think I have a working solution for now, which is to use RemoteTransform2Ds in the skeleton in place of the sprites, and then put all of the sprites outside of the skeleton where I can change their render order just by changing their order in the scene outliner. It's not ideal, but it seems to work so I'm going to go with this. Thanks again