In my ghc.mk I have declared:

$(eval $(call build-prog,driver/ghc-split,dist,0))
$(eval $(call bindist,driver/ghc-split,ghc.mk))

That second line isn't needed. I think you are trying to follow https://ghc.haskell.org/trac/ghc/wiki/Building/Modifying#Addingaprogram, but that information is outdated. Take a look at some ghc.mk files in the utils directory, for example `utils/hpc/ghc.mk`.

Now it's perfectly fine to build this at stage 1 or 2

Use stage1 to build it, or stage2 if you need access to the ghc api.

, but when I change it to either of those building fails telling me that
ghc-stage1 or ghc-stage2 cannot be found...

You are probably missing an entry like the following in the toplevel ghc.mk:

utils/hpc/dist-install/package-data.mk: compiler/stage2/package-data.mk