I am assuming that this line:
L91 G1 Z-250 M28 F20 G31 [Move down to tool switch]
permits the tool to move freely downwards until it hits the switch?
It would appear that you are trying to avoid setting (and using) tool length offsets?
G53 is the machine coordinate system. Chances are good that you cannot alter the position of the G53 coordinate system. The G92 is a coordinate system shift. Since you cannot shift the G53 system, I would think that you would have to specify one of the available work offsets (G54) at the start of your code, so that the G92 shift can actually be applied to something.
For example, if machine home is initially synonymous with the G54 workshift, then
G00 G53 X0Y0Z0 will return the machine to home.
and
G00 G54 X0Y0Z0 will return the machine to the same position, until such time that you shift the Z value with the G92. Setting the G92 after the G54 workshift has been called (established as current), then you should see a new position established for every tool. Maybe. I don't know what controller you are using.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)