While reviewing #17204 I noticed that the errors in input_errors from ::SignTransaction where being overridden by CWallet::SignTransaction. For example, a Script related error led to incomplete signature data which led to CWallet::SignTransaction reporting that keys were missing, which was a less precise error than the original one.
Note: in our codebase the errors are overwritten one more time, as a result of a change in D8100. The comment mentions "get proper error messages". None of these error messages seem to be tested at the moment, because removing this block does not cause any test to fail.
This is a backport of core#19568