SIGHASH_SINGLE only commits to the output at the input's index. If the output at such
position doesn't exist, it commits to no output at all (legacy uses a fixed sighash of 1, segwit
v0 zeroes hashOutputs), which means the signature stays valid even when outputs are
swapped, which is a footgun that lets funds be redirected without the owner's consent.
SignTransaction() already skipped these inputs, but SignPSBTInput() did not, so
walletprocesspsbt signed them. This moves the check into the CreateSig so both
paths, and any future one, skip producing the detached signature.
Note: if there is a valid use for the segwit v0 case, I would rather re-allow it through an explicit opt-in arg than by default, so it is always a deliberate choice.
Fixes #35977