You seem to like to have this "bootstrap" target that clones and sets up some of the additional repositories. While submodules do have their problems, this seems to be the most common way of handling such a use-case.
Do you have any specific reasons not to use this approach?