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.
---
Depends on D6714
Partial backport of Core [[https://github.com/bitcoin/bitcoin/pull/16237 | PR16237]]