I really think it should work to use Direct3D or OpenGL output and force vsync on in the video drivers, unless the video drivers are broken/stupid and don't do it even if you set them to. Try Gulikoza's DOSBox CVS with output=direct3d (not the same as ddraw) and make sure you have your video drivers set to force vsync enabled in Direct3D apps (not just default enabled)
I haven't tried this out, but I'll add to this discussion...
Does the implementation of vsync emulation reference my real display driver's vsync status, or does it simply use a timer appropriate to the current state of the emuated graphics mode? If no great care is taken to play nicely with my real display driver's state of refresh, then the latter would lead to a tear-line drifting up or down the screen corresponding to the slight discrepancy between the state of the emulated display and my real display's state of refresh (and this is in the ideal case where the real hardware's refresh rate is set to basically the same frequency as the emulated one).
Not knowing how it currently works, I think it would be best to make both implementations available. The former would be best for the most faithful emulation (most compatible), and the latter would be best for the smoothest rendering (lovely, and good for most people).
(There may also be the possibility of other options that make an effort to make an intelligent decision, or to mostly do the former but also avoid any tearing on the real display.. but I think it's best to keep the option transparent and in the hands of the user)