I'd be completely happy with specifying the mapping from "what" to "where" in a configuration file, outside of setup.py. That would be even more convenient since it would be more DRY than having dependency_links in every package's setup.py. The mapping could be Python code consisting of lines like:

map( 'foo<=1.5',  git+https://myrepo/foo@master#egg=1.5 )

or with patterns

map_re( '(bar-.*)<=(.*)',  git+https://myrepo/$1@master#egg=$1-$2 )

This is probably a bit naive, especially with respect to how it translates the version constraint into a concrete version.

I think that's an interesting idea, although I think your $2 would need to alter the @ part as well, which is the tag or branch your cloning
If the mappings could be constructed as option values, then the mappings could just live in the requirements file.

e.g. a mapping for "myproject" that has myproject==version map to a tag in the clone equal to "version"

--vcs-req-map  myproject:git+https://myrepo/myproject@${version}#egg=myproject