To add to that, and for anyone wondering on the Unity side.
What @badlogic described with Spine renderers in 3D engines is true when your rendering/shader code writes to the depth buffer.
This is not true for the default shader that Spine-Unity uses– Spine/Skeleton
, keeping with how Unity's 2D system and sprite shaders work.
The solution there was to let the user define slots in the Draw Order list as points where the render is separated, so the skeleton can be rendered in two or more renders/batches. Then you can sandwich renders between them by specifying their UnityEngine.Renderer sorting order values. If you did this with two separate skeletons, they can hug with predictable results.
Fortunately, this solution comes with the package. https://github.com/pharan/spine-unity-docs/blob/master/SkeletonRenderSeparator.md
For other runtimes, a similar idea would be to have a renderer that only renders a specific subset of the slots at a time (eg, render slot 0 to 5, then something else, then slot 6 to 10), instead of all the slots in the skeleton.