Hi,
Well, our dynamic engine is based on the bullet engine. Be sure that it's not working before implementing your own solution.
If you want something to be executed at the world level, you need a SceneHookData for sure. That SceneHookData .Execute will be called whenever the scene needs to be updated. That SceneHookData can check all the object of your document and update them.
You will probably need to store some data at world level, this can also be done in a NodeData stored inside a SceneHookData.
Running the Bullet Engine in multiple threads can be tricky, especially if you want object to interact.
the task looks huge, but not impossible.
Cheers,
Manuel