### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current behaviour

The WalletCreateTxUsePresetInputsAndCoinSelection benchmark crashes on master due to the commit 758501b71391136c33b525b1a0109b990d4f463e introduced in #25273 (I used git bisect to verify).

```
valgrind ./src/bench/bench_bitcoin -filter=WalletCreateTxUsePresetInputsAndCoinSelection -min-time=10000
==34277== Memcheck, a memory error detector
==34277== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==34277== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==34277== Command: ./src/bench/bench_bitcoin -filter=WalletCreateTxUsePresetInputsAndCoinSelection -min-time=10000
==34277==
bench_bitcoin: bench/wallet_create_tx.cpp:135: WalletCreateTx(ankerl::nanobench::Bench&, OutputType, bool, std::optional<PreSelectInputs>)::<lambda()>: Assertion `tx_res' failed.
==34277==
==34277== Process terminating with default action of signal 6 (SIGABRT)
==34277==    at 0x4DD79FC: __pthread_kill_implementation (pthread_kill.c:44)
==34277==    by 0x4DD79FC: __pthread_kill_internal (pthread_kill.c:78)
==34277==    by 0x4DD79FC: pthread_kill@@GLIBC_2.34 (pthread_kill.c:89)
==34277==    by 0x4D83475: raise (raise.c:26)
==34277==    by 0x4D697F2: abort (abort.c:79)
==34277==    by 0x4D6971A: __assert_fail_base.cold (assert.c:92)
==34277==    by 0x4D7AE95: __assert_fail (assert.c:101)
==34277==    by 0x29607B: operator() (wallet_create_tx.cpp:135)
==34277==    by 0x29607B: ankerl::nanobench::Bench& ankerl::nanobench::Bench::run<WalletCreateTx(ankerl::nanobench::Bench&, OutputType, bool, std::optional<PreSelectInputs>)::{lambda()#3}>(WalletCreateTx(ankerl::nanobench::Bench&, OutputType, bool, std::optional<PreSelectInputs>)::{lambda()#3}&&) [clone .isra.0] (nanobench.h:1221)
==34277==    by 0x297F81: WalletCreateTx(ankerl::nanobench::Bench&, OutputType, bool, std::optional<PreSelectInputs>) [clone .constprop.0] [clone .isra.0] (wallet_create_tx.cpp:132)
==34277==    by 0x21B74A: operator() (std_function.h:590)
==34277==    by 0x21B74A: benchmark::BenchRunner::RunAll(benchmark::Args const&) (bench.cpp:119)
==34277==    by 0x1F8B96: main (bench_bitcoin.cpp:132)
==34277==
==34277== HEAP SUMMARY:
==34277==     in use at exit: 48,159,834 bytes in 72,552 blocks
==34277==   total heap usage: 1,668,158 allocs, 1,595,606 frees, 552,252,252 bytes allocated
==34277==
==34277== LEAK SUMMARY:
==34277==    definitely lost: 0 bytes in 0 blocks
==34277==    indirectly lost: 0 bytes in 0 blocks
==34277==      possibly lost: 912 bytes in 3 blocks
==34277==    still reachable: 48,158,922 bytes in 72,549 blocks
==34277==         suppressed: 0 bytes in 0 blocks
==34277== Rerun with --leak-check=full to see details of leaked memory
==34277==
==34277== For lists of detected and suppressed errors, rerun with: -s
==34277== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Aborted
```

### Expected behaviour

No crash

### Steps to reproduce

`git checkout master && make -j$(nproc)`
`valgrind ./src/bench/bench_bitcoin -filter=WalletCreateTxUsePresetInputsAndCoinSelection -min-time=10000`

### Relevant log output

_No response_

### How did you obtain Bitcoin Core

Compiled from source

### What version of Bitcoin Core are you using?

master@758501b71391136c33b525b1a0109b990d4f463e

### Operating system and version

Ubuntu 22.04.3 LTS

### Machine specifications

_No response_
CHECK_NONFATAL(err == TransactionError::OK);
        CHECK_NONFATAL(!complete);
        DataStream ssTx{};
        ssTx << psbtx;
        result.pushKV("psbt", EncodeBase64(ssTx.str()));
    }
    result.pushKV("origfee", ValueFromAmount(old_fee));
    result.pushKV("fee", ValueFromAmount(new_fee));
    UniValue result_errors(UniValue::VARR);
    for (const bilingual_str& error : errors) {
        result_errors.push_back(error.original);
    }
    result.pushKV("errors", result_errors);
    return result;
},
    };
}
RPCHelpMan bumpfee() { return bumpfee_helper("bumpfee"); }
RPCHelpMan psbtbumpfee() { return bumpfee_helper("psbtbumpfee"); }
RPCHelpMan send()
{
    return RPCHelpMan{"send",
        "\nEXPERIMENTAL warning: this call may be changed in future releases.\n"
        "\nSend a transaction.\n",
        {
            {"outputs", RPCArg::Type::ARR, RPCArg::Optional::NO, "The outputs specified as key-value pairs.\n"
                    "Each key may only appear once, i.e. there can only be one 'data' output, and no address may be duplicated.\n"
                    "At least one output of either type must be specified.\n"
                    "For convenience, a dictionary, which holds the key-value pairs directly, is also accepted.",
                OutputsDoc(),