On my Fanuc 0i controlled machine, G53 is inherently commanded as G0.

I could command
G1 A-13. F100.
G53 A0
and my machine will feed to A-13. at 100 IPM, then rapid to A0 even though G1 is still modal if you look at the modal G codes after the G53 line finishes.

A work around could be:
read the current values for G59 and set a flag, set current G59 values to temporary variables, set G59 values to 0, execute warmup program, when finished, restore previous values

on a Fanuc, this could be something like

IF[#810EQ1.234]GOTO1234 (skip if already 0)
#800=#(Variable for G59 X value);
#801=#(Variable for G59 Y value);
#802=#(Variable for G59 Z value);
#(G59 X variable)=0
#(G59 Y variable)=0
#(G59 Z variable)=0
#810=1.234 (set flag so values are not overwritten with 0)
N1234
(execute warmup program)
#(G59 X variable)=#800 (reset G59 to previous values)
#(G59 Y variable)=#801
#(G59 Z variable)=#802
#810=0 (reset flag after successful completion of program)
M30

Or did you find another work around?