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