I think the question is- how would you snap the objects back into an acceptable position without physics acting bonkers?
Typically people suggest more iterations or a smaller timestep.
I think it's probably better to find a way to make the physics engine work for you. A hacky fake distance joint will probably behave pretty weirdly.
Anyway, you could just set up an FSM to GetParent, check distance, normalize the distance vector, multiply by max stretch.
It's probably about 10 actions or so.