I personally use (< "4.03") instead of (< "4.03.0"), and I believe that this way to rule out 4.03.x versions would remain correct (and readable) if the negative-"~" convention was adopted, as long we don't use "4.03~foo" as a version number but rather "4.03.0~foo".
(Note that "4.05~dev" could have the nice effect that software configured to pessimistically reject future OCaml releases (< 4.05) could still be built from a development version for testing.)
I must say that this semantics for ~ looks rather nice -- although I agree that writing foo~~ would be a wart and should be avoided.