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