One way would be to separate all the pices into diffrent meshbuffers, but with the same skin.
so what you realy do is to pick all the limbs you want, and combine them into one vertex buffer and draw that one when needed. so you dynamicly generates this buffer at command from the user.
So it´s basicly a big merger but with diffrent limb options. and if you store your vertexlayout smart you dont need to bother about how you store your vertexes.
For every vertex save
Position, bones, texture ID.
Then you can just push on whatever to build your vertex buffer. and dynamicly set the textures for specific vertexes. and bones aswell. and it will be pretty fast aswell if you combine all this into one drawcall.