Yea, the swapping method works with that technique. The programmers made it so that we could set a static flag on pieces that we wanted to stay stationary. Objects with a static flag would also stay under the joints if they were animated. So in your ship example, the cannonball hits the ship, the main part of the ship…
This is not an entirely useful post - but if you can get your hands on Bad Company 2, they do an extremely good job with destructables. The engine definitely was coded with it in mind (a main selling point for the game) but I'm not sure which method they use. Probably swapping. Unfortunately there is no 'modding' support…