The values being set into your work offsets are the "starting position error" coordinates, which is the distance of the probed bore center from the position where you started the cycle. That's why it deviates by only a few thou from part to part. In order to do what you want, there's some additional math that has to happen before it sets the offsets, specifically to add or subtract that position error from the starting machine coordinates.
Normally when running the probe cycles through MDI, the "branching" programs (o9023 or o9997) do the math for you then call the subroutine that assigns offsets again to fix it. Anyway I'm not in front of a machine right now but I think this will do what you need:
G65 P9810 Z-0.2 F50
G65 P9814 D1.33 S154.01
#190= #190 + #5041
#191= #191 + #5042
G65 P9732 S154.01 W1. (assign offsets)
G65 P9810 Z1.00 <this could be a rapid movement since it's just going "up", but the protected movement certainly won't hurt
I ripped those lines out of branching program so I believe that'll do it. The macros #190&191 contain that position error which is added/subtracted to the current position (which should be the same as where it started).
There's another way to fix it but it involves running the probe branching program instead of directly calling the bore cycle. So in this case use G65 P9023 A1.0 D1.33 S154.02
The downside is that o9023 will want to activate and deactivate the probe every time, so it adds like 1-2 seconds to each of the measurements. Also you'll need to re-activate the probe to run the protected movement for the second and third parts. So ultimately the program will have some redundancies and a few seconds wasted, but it might end up being more simple (just depends on your goals I suppose)