I really don't think you want to use the Through option if you're specifying distances.

The yellow Line is the original, point A is where you pick on it, the radius of the dashed Arc is the specified distance, and the green Line is the intended result. Unless the cursor direction is exactly perpendicular to the original Line from the pick point, under the Through option the resulting Offset distance will always be shorter than intended. In this exaggerated example, the cursor direction is significantly off of perpendicular for clarity. Given that distance at that cursor direction, point B is used for the Through point, meaning the result is the red Line, far less than the intended Offset distance from the yellow original.
I think you want it to use the distances you give it, directly, not by way of the Through option. And this seems to do what I think you may really want, based on the image in Message 1 and some of your descriptions [lightly tested].
(defun C:OMV (/ od esel pt1 pt2); Offset Multiple at Varying distances [same direction]
(initget 6); no zero, no negative
(setq
od (getdist "\nSpecify first offset distance: ")
esel (entsel "\nSelect initial object to offset: ")
pt1 (vlax-curve-getStartPoint (car esel))
)
(command "_.offset" "_erase" "_no" od (list (car esel) pt1) pause ""); pause for to-which-side
(setq pt2 (vlax-curve-getStartPoint (entlast)))
(initget 6)
(while (setq od (getdist "\nNext Offset distance: "))
(command "_.offset" od "_non" (list (entlast) pt2) "_non" (polar pt2 (angle pt1 pt2) 1) "")
(setq pt1 pt2 pt2 (vlax-curve-getStartPoint (entlast)))
(initget 6)
)
(prin1)
)
You specify the initial distance, and pick the original object and the original side for the first Offset only. Then you simply give it more distances -- no cursor involvement, unless you want to specify a distance by two picks on-screen. Each distance given is used to Offset the latest result object by that distance in the same direction as you used for the first Offset.

It works for all sorts of objects [Line, Arc, Circle, Polyline (not 3D), Ellipse, Spline, Ray], with or without Dynamic Input running. [If you want to be able to use it on Xlines, they don't have a (vlax-curve-getStartPoint), so a check for entity type would be needed, and the MIDpoints used instead.] In some configurations of Polylines and Splines, when more than one new object results from an Offset, successive Offsets could have odd results, but that's equally true when done manually. And going inward with Arcs/Circles/Ellipses will run up against a limit, but that's also equally true outside of any routine.
If I have misunderstood, explain what should be different.
Kent Cooper, AIA