Why "Signing the input scripts as well would obviously make it
impossible to construct a transaction"?
As it states in the source code, signatures cannot sign themselves. If scriptSigs were included in the data that is being signed, the act of inserting the newly calculated signature for one input would break the signatures for all the others.