Hello,
Regarding the question yes, using GetDeformCache is the way to go.
Using one object, there's not too much difference between MCOMMAND_CURRENTSTATETOOBJECT and MCOMMAND_JOIN as the MCOMMAND_JOIN is calling a MCOMMAND_CURRENTSTATETOOBJECT for each object.
The obvious part is that the Join command will create one object while the other will return a hierarchy. (if there are children)
Cheers,
Manuel