### 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_
const bool rbf{replaceable_arg.isNull() ? wallet.m_signal_rbf : replaceable_arg.get_bool()};
    CMutableTransaction rawTx = ConstructTransaction(request.params[0], request.params[1], request.params[2], rbf);
    CCoinControl coin_control;
    // 
    // 
    coin_control.m_allow_other_inputs = rawTx.vin.size() == 0;
    SetOptionsInputWeights(request.params[0], options);
    auto txr = FundTransaction(wallet, rawTx, options, coin_control, true);
    
    PartiallySignedTransaction psbtx(CMutableTransaction(*txr.tx));
    // 
    bool bip32derivs = request.params[4].isNull() ? true : request.params[4].get_bool();
    bool complete = true;
    const TransactionError err{wallet.FillPSBT(psbtx, complete, 1, false, bip32derivs)};
    if (err != TransactionError::OK) {
        throw JSONRPCTransactionError(err);
    }
    
    DataStream ssTx{};
    ssTx << psbtx;
    UniValue result(UniValue::VOBJ);
    result.pushKV("psbt", EncodeBase64(ssTx.str()));
    result.pushKV("fee", ValueFromAmount(txr.fee));
    result.pushKV("changepos", txr.change_pos ? (int)*txr.change_pos : -1);
    return result;
},
    };
}
} //