how many question are you still going to ask?
> Why this cannot be substituted by "sub-builds" (with many or most modules that are
> untouched in the release, disabled) and only do the final build once?
> (and I believe that is what you guys do anyway...?)
because if you don't build the whole tree, you could break some dependence (e.g. of a different driver from the one you're working on, which shares some components) and doing so you could stop some other devs' work. and checking over and over which components are interconnected takes sometimes as much time as compiling the complete tree from scratch.
verifying that everything compiles fine before a commit is mandatory (things already break this way from time to time, due to e.g a single .h file missing to be updated, without adding more entropy)
also, most of the complains were about building time of the maintainer before a release: you do realize that before every release the maintainer compiles baseline, debug, SDL and (when applicable) MSVC builds to be sure that everything compiles fine and only after that packaging a release? add the times you have to fix a compile and start from scratch, and maybe you will start to understand the magnitude of time we are talking about
> If someone is responsible for the builds (or even more than one person), how hard is
> it to raise a fund to pay for the extra hardware needed?
because this is not a job. taking care of releases should not be an obligation due to people having paid for that, or it would get very close to obligations towards paying clients at work