Makes code more clear and prevents accidentally calling the wrong ctor.
This is a backport of core#20833 [2/13]
https://github.com/bitcoin/bitcoin/pull/20833/commits/578148ded62828a9820398165c41670f4dbb523d
Depends on D12101
Commit backported out of order (standalone refactorings first, new feature last)