As of Godot 3.5 :
The way to do it is Sprite3D node > Viewport node > SpineSprite node.
The SpineSprite node(s) have to be a child of Viewport node. Viewport will render stuff upside down so you either enable "Flip V" ( vertical ) in Sprite3D properties ( under SpriteBase3D classs ) or use negative Y scale in SpineSprite properties ( under Node2D class ). The Viewport has a default size of ( 0, 0 ) so you have to resize it. Enable "Transparent BG" in Viewport properties. On the SpineSprite properties, transform (x, y) position ( under Node2D class ) to be visible in the Viewport.
You can set a Texture2D texture property on the Sprite3D node.
https://docs.godotengine.org/en/3.5/classes/class_sprite3d.html#class-sprite3d-property-texture
Texture2D data can be a texture resource created from the Viewport node as ViewportTexture data.
https://docs.godotengine.org/en/3.5/classes/class_viewporttexture.html#class-viewporttexture
Check out the flags under SpriteBase3D class on the Sprite3D node properties. Enable "Billboard" flag if you want the sprite to always face camera. Enable "Transparent" flag. Enable "Double Sided" flag to allow the texture on the backside of the Sprite3D node.
You can do the same thing similarly with SpatialMaterial resource as well.
You have to test the performance and limitations yourself to see if it is acceptable to your requirements.