I forgot to post an update on this for a while, but since doing a lot of experimentation and finally reaching a solution that works, I'll make this a sort-of answer to the question for anyone who finds this in the future.
If you're trying to do something the way I wanted to do it (as described in the question), you're probably going about solving your problem the wrong way. Physics and non-physics interactions will always be unreliable and not well-supported whichever engine you're using because of the way the calculations work and the threads they run in; I've learnt this lesson before, but in this case I was trying really hard to optimise something that couldn't be optimised much further. If you want accurate physics, use rigid bodies and attach them together with joints if necessary, but don't attempt to update their transforms using anything other than the physics engine. Optimisations can be made where some of the physics accuracy can be discarded.
Also, if you're worried that the design of something in your game will be too processing-intensive due to its need for a large number of physics bodies, reconsider what's really necessary for its role in the game to work, and try out some more simple (but still effective) designs. More complex designs are more likely to be more difficult to work with in the long-term in any case, and there's always the chance that you don't actually need physics to make something work; code and animations can often be used to make something that works just as well, or more, depending on how complex something's interactions with the world need to be.
Hope this helps. If someone has some more information they think would be useful relating to my original question or this comment, feel free to comment it as I'll still be checking this discussion in the future...