A lot depends on the capabilities of your controller.
Typically, the machine home does not correspond to the part home (or reference point) for the reasons you state.
Work offsets are most commonly employed to provide a temporary shift of the machine home position to a new location. This shift is called up after the X and Y values for the difference in position between the two reference points have been inserted into a table of work offsets, commonly beginning at G54 and continuing up to G59 (the first 6 standard work offsets lie in that range).
So what kind of machine controller are you using?