Is there something about ghcup that doesn't do the job for you? You ask it to install a particular version of GHC and Cabal for you. It does it. Multiple versions can exist together. Job done.
the default is pvp [1] and I think most packages use that and not SemVer? or, at least, I can't remember off the top of my head of specifically pinning a package with SemVer.