Follow-up to #36250 (currently based on its head; will rebase onto master after it merges).
The same error is returned for every DecodeHexTx() failure — invalid hex, incomplete or malformed serialization — and DecodeHexTx() does not check that vin is nonempty (an empty-input transaction that decodes is rejected later by CheckTransaction() as bad-txns-vin-empty). This applies the message agreed in #36250 to the remaining DecodeHexTx() error paths: testmempoolaccept, submitpackage, generateblock, combinerawtransaction, signrawtransactionwithkey, signrawtransactionwithwallet, and importprunedfunds. simulaterawtransaction is unchanged: its "Transaction hex string decoding failure." message is already generic and accurate.
The first commit changes only the wording, retaining the payload echo in the array RPCs so it passes independently. The second commit replaces the echoed raw hex with the failing element's index (e.g. "TX decode failed for tx 1. ..."), matching combinerawtransaction's existing behavior: the echo can be hundreds of KB and returns data the caller already has, while the index identifies the failing array element.
Tests verify the reported index for malformed elements in non-first positions and that the raw hex is no longer echoed; full-message assertions now cover testmempoolaccept, submitpackage, generateblock, combinerawtransaction (index preserved), signrawtransactionwithkey, signrawtransactionwithwallet, and importprunedfunds.