For an ion, dynamicalMass includes mass of electrons, according the charge state of the ion. Method G4DynamicParticle::SetCharge() allows to change the charge of the ion. But, I believe, the dynamicalMass is not updated after this change.
As you pointed out, G4DynamicParticle::SetCharge() does not take into account mass. I expected that processes which set electric charge of ions should take care of both mass and electrons (together with binding energy if necessary)