Hey there, Love your project. Played it quite a bit.
As far as i can tell with triangle meshes and bodies, They don't mix well at all. Part of it being that TriangleMesh primitive does not output correct inertia values tailored to the mesh.
Is your game based off JiggleGame? if your using TriangleMeshObject.cs the body is actually not tied to the physics body at all.
The way it's setup is not to be used as a physics simulated object but only for collision.
The best fix i could think of is instead using a collection of primitives that fit the triangle mesh that is rendered. that way you can still render your triangle mesh, and benefit from probably faster collisions using multiple primitives instead of a complex triangle mesh.
One other thing you might want to try is instead of using body.MoveTo, disassociate the collisionskin completely from a body and use ApplyLocalTransform or SetNewTransform functions on the collision skin. I am unsure that these will effect the Transform (it seems like plane doesnt interact with these functions well) but its probably worth a shot if you do not want to make a compound collisions skin per model/triangle mesh.
if you do decide to go the compound primitive route theres a tool that can help get you started on placing primitives to the triangle mesh ( assuming its a .x ). It allows you to place primitives around the mesh and export functions that do the construction of the collision skin. Depending on how many building meshes you have this could be a good route. If you have what you would consider a small amount then you could implement the functions per model path. Otherwise you might want to go another route and make your own content importer that puts the collisionskin in the tag of the model. You would have to make your own format for parsing the data this way but it might benefit you to go this route if you have alot of triangle mesh collisions that need to be transformed realtime.