Backport CWallet::SignTransaction from master which is simpler and not broken.
Previously CWallet::SignTransaction would return false for a fully signed transaction. This is a regression and obviously incorrect - a fully signed transaction is always complete. This occurs because CWallet::SignTransaction would iterate through each input and skip any further checks if the input was already signed. It would then end up falling through to the return false catch-all thus erroneously saying a fully signed transaction is incomplete. The change to attempting to use all ScriptPubKeyMans fixes this problem since the LegacyScriptPubKeyMan (the only spkm implemented in 0.20) will verify inputs during its signing attempt and correctly return that it is complete when the inputs verify. Thus a fully signed transaction will be correctly identified as complete, LegacyScriptPubKeyMan::SignTranaction will return true, and so CWallet::Transaction will return true too.
Note that this is not a backport of any specific commit. Rather it is the end result of the changes we have made to this function in master.
Fixes #19737