Not sure I understand your z probe height detection. Why is 20mm result at z=24.6 correct? All you proved is going up 20mm increases z measured 20mm, which is valid for every z probe height. Normally you would calibrate like this:
1. Guess z probe height, calibrate z using it
2. Home (only with z max homing)
3. Go to position so you are above triggering
4. Go to a position where you can activate probe
5. Lower nozzle until bed is touched, Z0 = Z
ZPROBE_HEIGHT = OLD_ ZPROBE_HEIGHT + Z0