In specter https://github.com/cryptoadvance/specter-desktop/issues/1491#issuecomment-1126145011  a user can abandon an **receiving** tx that was evicted from the mempool (for example because it was double spent). The tx is marked via [abandontransaction](https://github.com/bitcoin-dot-org/developer.bitcoin.org/blob/master/reference/rpc/abandontransaction.rst) as abandoned in bitcoin core.

However [gettransaction](https://github.com/bitcoin-dot-org/developer.bitcoin.org/blob/master/reference/rpc/gettransaction.rst) and [listtransactions](https://github.com/bitcoin-dot-org/developer.bitcoin.org/blob/master/reference/rpc/listtransactions.rst) do not return the field `abandoned`, even though this is visible in the GUI:

![image](https://user-images.githubusercontent.com/60378539/168316171-45c1aa29-de52-4d9a-ae2b-3293aeadd663.png)

**Consequence**: Specter cannot get the `abandoned` information from bitcoin rpc, and will fetch the abandoned tx back again via [listtransactions](https://github.com/bitcoin-dot-org/developer.bitcoin.org/blob/master/reference/rpc/listtransactions.rst) after it was deleted in specter.   

**Describe the solution you'd like**
Always return the `abandoned` field in https://github.com/bitcoin/bitcoin/blob/225e5b57b2ee2bc1acd7f09c89ccccc15ef8c85f/src/wallet/rpc/transactions.cpp#L345  and not only in this special case https://github.com/bitcoin/bitcoin/blob/225e5b57b2ee2bc1acd7f09c89ccccc15ef8c85f/src/wallet/rpc/transactions.cpp#L375
That should then automatically solve  [gettransaction](https://github.com/bitcoin-dot-org/developer.bitcoin.org/blob/master/reference/rpc/gettransaction.rst)  via https://github.com/bitcoin/bitcoin/blob/225e5b57b2ee2bc1acd7f09c89ccccc15ef8c85f/src/wallet/rpc/transactions.cpp#L795

**Describe alternatives you've considered**
If specter can't get the information about abandoned tx from bitcoin, it would have to keep an internal list. That is possible, but redundant and can lead to many edge cases.

**Steps to reproduce**

- Wallet A:  Send 1 BTC to Wallet B  (rbf)
- Wallet A:  Replace tx with rbf to send all funds to wallet A
- Wallet B: Abandon tx (because no longer in mempool)
- Wallet B:  [gettransaction](https://github.com/bitcoin-dot-org/developer.bitcoin.org/blob/master/reference/rpc/gettransaction.rst) will not show the  `abandoned` field
{RPCResult::Type::ARR, "transactions", "",
                        {
                            {RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
                            {
                                {RPCResult::Type::BOOL, "involvesWatchonly", true, "Only returns true if imported addresses were involved in transaction."},
                                {RPCResult::Type::STR, "address",  true, "The bitcoin address of the transaction (not returned if the output does not have an address, e.g. OP_RETURN null data)."},
                                {RPCResult::Type::STR, "category", "The transaction category.\n"
                                    "\"send\"                  Transactions sent.\n"
                                    "\"receive\"               Non-coinbase transactions received.\n"
                                    "\"generate\"              Coinbase transactions received with more than 100 confirmations.\n"
                                    "\"immature\"              Coinbase transactions received with 100 or fewer confirmations.\n"
                                    "\"orphan\"                Orphaned coinbase transactions received."},
                                {RPCResult::Type::STR_AMOUNT, "amount", "The amount in " + CURRENCY_UNIT + ". This is negative for the 'send' category, and is positive\n"
                                    "for all other categories"},
                                {RPCResult::Type::NUM, "vout", "the vout value"},
                                {RPCResult::Type::STR_AMOUNT, "fee", true, "The amount of the fee in " + CURRENCY_UNIT + ". This is negative and only available for the\n"
                                     "'send' category of transactions."},
                            },
                            TransactionDescriptionString()),
                            {
                                {RPCResult::Type::BOOL, "abandoned", true, "'true' if the transaction has been abandoned (inputs are respendable). Only available for the \n"
                                     "'send' category of transactions."},
                                {RPCResult::Type::STR, "label", true, "A comment for the address/transaction, if any"},
                            })},
                        }},
                        {RPCResult::Type::ARR, "removed", true, "<structure is the same as \"transactions\" above, only present if include_removed=true>\n"
                            "Note: transactions that were re-added in the active chain will appear as-is in this array, and may thus have a positive confirmation count."
                        , {{RPCResult::Type::ELISION, "", ""},}},
                        {RPCResult::Type::STR_HEX, "lastblock", "The hash of the block (target_confirmations-1) from the best block on the main chain, or the genesis hash if the referenced block does not exist yet. This is typically used to feed back into listsinceblock the next time you call it. So you would generally use a target_confirmations of say 6, so you will be continually re-notified of transactions until they've reached 6 confirmations plus any new ones"},
                    }