```
For optional constructor arguments, use a new struct. This comes with two benefits:
Earlier unused optional arguments can be omitted
Designated initializers can be used
```
Backport of [[https://github.com/bitcoin/bitcoin/pull/26074 | core#26074]].