I want to echo this sentiment.
I've lost a lot of time to Haddock. And there is no reasonable way to merge changes which affect Haddock (do I merge the Haddock change first? In that case, Haddock's master works only with a non-existent version of GHC. Or do I merge in GHC first? In which case, GHC, albeit temporarily, points to my own Haddock repo. What if one of these passes code review, and not the other?)
Generally speaking, I am of the opinion that submodules will work only if they all point to released version of the dependency. If we ever feel the need to point to a non-release version, then it should not be a submodule, and should simply be part of the main tree.
Haddock is not the only submodule which should be considered for inclusion (Cabal, for instance, seems to be pretty tightly integrated with GHC, and has had, if memory serves, similar issues in the past). But Haddock has been, by far, the worst offender, in my personal experience.