When using the `rescanblockchain` wallet RPC command, it seems like sometimes (though not always, and I couldn't find a specific pattern for when this does and doesn't happen) the `time` field of all transactions found is being set to the time of the most recent transaction detected. Besides that field, all data (including block and blocktime) return correctly. What's more, even in a node with `txindex=1` this happens, despite that when calling the (non-wallet-specific) `getrawtransaction` command, it returns the correct time.

Here's an example of a testnet transaction where I experienced this behaviour, and the output of Core where the same `txid` has. 2 different `time`s - a correct one using `getrawtransaction` and an incorrect one using `gettransaction`:
```
bitcoin-cli --testnet -rpcwallet=wallet getrawtransaction 8bacfc9c63d181e9d303f57f550fe72870afd640c961466829c6212bb23a72fe 1
{
  "txid": "8bacfc9c63d181e9d303f57f550fe72870afd640c961466829c6212bb23a72fe",
  "hash": "3de22064b8fec52fb183a8ad46fd011e6c6cab9906a008afa3d649d11bd250f1",
  "version": 2,
  "size": 222,
  "vsize": 141,
  "weight": 561,
  "locktime": 0,
  "vin": [
    {
      "txid": "685571776adce2ac3332faf6ed125235366cc3cb464604c9234bf371f1ab4e02",
      "vout": 0,
      "scriptSig": {
        "asm": "",
        "hex": ""
      },
      "txinwitness": [
        "30440220516d0b313aae44f639a111dac8f27bc1fac446345aaad51852a784620ac62c690220433cb7fdeb78cd84574ec0ddd08789a248fe19b71759e1b3b448ff9c3f980be401",
        "03eca8ceb44c4d930ab89fb5d721d02a745e4aeb0f75993fa535e98fb6c7f6e16e"
      ],
      "sequence": 4294967294
    }
  ],
  "vout": [
    {
      "value": 0.53891045,
      "n": 0,
      "scriptPubKey": {
        "asm": "0 f3020d45a9ccf870ddf4176fde4420931ffd9af6",
        "hex": "0014f3020d45a9ccf870ddf4176fde4420931ffd9af6",
        "reqSigs": 1,
        "type": "witness_v0_keyhash",
        "addresses": [
          "tb1q7vpq63dfenu8ph05zahau3pqjv0lmxhk73dsjm"
        ]
      }
    },
    {
      "value": 0.10000000,
      "n": 1,
      "scriptPubKey": {
        "asm": "0 bf702bf755da860153e7b1043fea160c6dcd9f1a",
        "hex": "0014bf702bf755da860153e7b1043fea160c6dcd9f1a",
        "reqSigs": 1,
        "type": "witness_v0_keyhash",
        "addresses": [
          "tb1qhaczha64m2rqz5l8kyzrl6skp3kum8c6m0c2h4"
        ]
      }
    }
  ],
  "hex": "02000000000101024eabf171f34b23c9044646cbc36c36355212edf6fa3233ace2dc6a777155680000000000feffffff02e54f360300000000160014f3020d45a9ccf870ddf4176fde4420931ffd9af68096980000000000160014bf702bf755da860153e7b1043fea160c6dcd9f1a024730440220516d0b313aae44f639a111dac8f27bc1fac446345aaad51852a784620ac62c690220433cb7fdeb78cd84574ec0ddd08789a248fe19b71759e1b3b448ff9c3f980be4012103eca8ceb44c4d930ab89fb5d721d02a745e4aeb0f75993fa535e98fb6c7f6e16e00000000",
  "blockhash": "00000000000000bc3b97cbe323c4695f39a65cc1d73060dca8ad084fb0ce61b5",
  "confirmations": 27528,
  "time": 1600623861,
  "blocktime": 1600623861
}
```
```
bitcoin-cli --testnet -rpcwallet=wallet gettransaction 8bacfc9c63d181e9d303f57f550fe72870afd640c961466829c6212bb23a72fe
{
  "amount": -0.10000000,
  "fee": -0.00000142,
  "confirmations": 27528,
  "blockhash": "00000000000000bc3b97cbe323c4695f39a65cc1d73060dca8ad084fb0ce61b5",
  "blockheight": 1835261,
  "blockindex": 24,
  "blocktime": 1600623861,
  "txid": "8bacfc9c63d181e9d303f57f550fe72870afd640c961466829c6212bb23a72fe",
  "walletconflicts": [
  ],
  "time": 1601486746,
  "timereceived": 1602570577,
  "bip125-replaceable": "no",
  "details": [
    {
      "involvesWatchonly": true,
      "address": "tb1q7vpq63dfenu8ph05zahau3pqjv0lmxhk73dsjm",
      "category": "send",
      "amount": -0.53891045,
      "label": "Change #5",
      "vout": 0,
      "fee": -0.00000142,
      "abandoned": false
    },
    {
      "involvesWatchonly": true,
      "address": "tb1qhaczha64m2rqz5l8kyzrl6skp3kum8c6m0c2h4",
      "category": "send",
      "amount": -0.10000000,
      "vout": 1,
      "fee": -0.00000142,
      "abandoned": false
    },
    {
      "involvesWatchonly": true,
      "address": "tb1q7vpq63dfenu8ph05zahau3pqjv0lmxhk73dsjm",
      "category": "receive",
      "amount": 0.53891045,
      "label": "Change #5",
      "vout": 0
    }
  ],
  "hex": "02000000000101024eabf171f34b23c9044646cbc36c36355212edf6fa3233ace2dc6a777155680000000000feffffff02e54f360300000000160014f3020d45a9ccf870ddf4176fde4420931ffd9af68096980000000000160014bf702bf755da860153e7b1043fea160c6dcd9f1a024730440220516d0b313aae44f639a111dac8f27bc1fac446345aaad51852a784620ac62c690220433cb7fdeb78cd84574ec0ddd08789a248fe19b71759e1b3b448ff9c3f980be4012103eca8ceb44c4d930ab89fb5d721d02a745e4aeb0f75993fa535e98fb6c7f6e16e00000000"
}
```
Mutex m_unlock_mutex;
    bool Unlock(const SecureString& strWalletPassphrase, bool accept_no_keys = false);
    bool ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase, const SecureString& strNewWalletPassphrase);
    bool EncryptWallet(const SecureString& strWalletPassphrase);
    void GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    unsigned int ComputeTimeSmart(const CWalletTx& wtx) const;
    /**
     * Increment the next transaction order id
     * @return next transaction order id
     */
    int64_t IncOrderPosNext(WalletBatch *batch = nullptr) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    DBErrors ReorderTransactions();
    void MarkDirty();
    
    
    
    
    
    
    using UpdateWalletTxFn = std::function<bool(CWalletTx& wtx, bool new_tx)>;
    CWalletTx* AddToWallet(CTransactionRef tx, const CWalletTx::Confirmation& confirm, const UpdateWalletTxFn& update_wtx=nullptr, bool fFlushOnClose=true);
    bool LoadToWallet(const uint256& hash, const UpdateWalletTxFn& fill_wtx) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    void transactionAddedToMempool(const CTransactionRef& tx, uint64_t mempool_sequence) override;
    void blockConnected(const CBlock& block, int height) override;
    void blockDisconnected(const CBlock& block, int height) override;
    void updatedBlockTip() override;
    int64_t RescanFromTime(int64_t startTime, const WalletRescanReserver& reserver, bool update);
    struct ScanResult {
        enum { SUCCESS, FAILURE, USER_ABORT } status = SUCCESS;