gui: Avoid Wallet::GetBalance in WalletModel::pollBalanceChanged
Each 250ms the slot WalletModel::pollBalanceChanged is called which, at worst case, calls Wallet::GetBalance. This is a waste of resources since most of the time there aren't new transactions or new blocks. Fix this by early checking if cache is dirty or not.
This is a backport of Core PR18160
See D7938 (Remove locked_chain from CWallet) for why the src/interfaces/wallet.cpp diff looks different
Test Plan: ninja all check-all
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D8896