I've been using bullet for a while now.
I the first problem I see is that joints should never be the children of the bodies they control. And in fact you should not ever manipulate a rigid body's transform directly or outside of _physics_process (use apply forces or impulse for example).
You can however connect a kinematic body to a rigid body via a joint and manipulate the kinematic body as you please (within reason again, so the solver does not deal with huge impulses or extreme delta v)
I made the same mistake you did initially.
The reason why it is wrong is because the joint is effecting the position of the body and, as a child of the body, the joint is constantly being moved by the body transform changes. This causes bullet to constantly be disrupted because the joint is being reposition external to its solver. It gets really upset about it.
Break down he problem to a two body example and connect body a and b by a joint that is not the child of either.
The high order bit, is don't manipulate rigid body and their joints transforms bullet will get confused.
Don't arrange rigid bodies or joints in a hierarchy, put them instead in a Spatial node to organize them cleanly
So:
Root-Node-For-Physics-Assembly (spatial)
body-a
body-b
...
joint-1
joint-2
..
or similar
You can even
Root (spatial)
Blob o things 1 (spatial)
bodies and joint children
Blob o things 2 (spatial)
etc.
* joint 1 to blob o things1 sub rigid body and blob 2 sub rigid body..