```
After refactoring general-purpose PSBT and transaction code out of RPC
code, for use in the GUI, it's no longer appropriate to throw
exceptions. Instead we now return bools for success, and take an output
parameter for an error object.
We still use JSONRPCError() for the error objects, since only RPC
callers actually care about the error codes.
```
Partial backport of core PR14978:
https://github.com/bitcoin/bitcoin/pull/14978/commits/bd0dbe8763fc3029cf96531c9ccaba280b939445