Previously it was possible for HaveCoinInCache to return true for a spent coin. It is more clear to keep the semantics the same. HaveCoinInCache is used for two reasons:
- tracking coins we may want to uncache, in which case it is unlikely there would be spent coins we could uncache (not dirty)
- optimistically checking whether we have already included a tx in the blockchain, in which case a spent coin is not a reliable indicator that we have.
This makes the logic in #10557 more obviously correct, although it is ok without this PR