Since there are two goals, a more correct implementation would be to split
these into two versions. The simplest would be to have an integer
"version epoch" field in the package metadata separate from the version
number. So instead of:
Version: 1.8-1
Version: 1:1.6-1
you'd have:
Version: 1.8-1
Version: 1.6-1
Epoch: 1
We then could implement the separate semantics: only the version field
would be used for interpackage dependencies, so 1.6-1 with epoch 1 would
not satisfy >= 1.8 dependencies, but DAK and apt clients would know that
any package with epoch 1 supersedes packages with no epoch for archive and
default installation purposes.
Of course, getting to that from where we are now may be substantially more
trouble than it's worth, and it would necessarily be a very slow rollout
process (and there are still issues with unique filenames).