Instead of having the same multiple lines of code everywhere
that new destinations are fetched, introduce GetNewDestination as
a member function of CWallet which does the key fetching, label
setting, script generation, and destination generation.
https://github.com/bitcoin/bitcoin/pull/16237/commits/172213be5b174243dc501c1103ad5fe2fee67a16
Depends on D6714
Partial backport of Core PR16237