Per BIP61, reject code 0x12 for transactions corresponds to “input already spent”.
We currently have two internal codes (REJECT_CONFLICT and REJECT_ALREADY_KNOWN) for validation failures for transactions that conflict with the mempool, and are already known repectively.
I think that under a reasonable interpretation of BIP61, those failures actually match “input already spent” and should thus trigger a reject code 0x12.
Implement that.
Reported by @achow101 that some failures did not cause a reject message.