Fixes #29711.
When MiniMiner cannot calculate individual bump fees, wallet funding can
index missing bump-fee entries and return map::at to users.
Treat an empty bump-fee map for non-empty requested outpoints as a
calculation failure. Make AvailableCoins return
util::Result<CoinsResult> so transaction creation and sendall can
propagate the wallet error instead of leaking an internal exception.
Add a functional regression test in wallet_spend_unconfirmed.py
covering the large unconfirmed set scenario from #29711. The test checks
auto-selected inputs, manually selected inputs, and sendall, and verifies
that spending succeeds again after mining a block.
Tested:
cmake --build buildbuild/bin/test_bitcoin --catch_system_errors=nobuild/bin/test_bitcoin --run_test=miniminer_tests --catch_system_errors=nobuild/bin/test_bitcoin --run_test=spend_tests --catch_system_errors=nobuild/bin/test_bitcoin --run_test=coinselector_tests/bump_fee_test --catch_system_errors=nobuild/bin/test_bitcoin --run_test=wallet_tests/ListCoinsTest --catch_system_errors=nobuild/bin/test_bitcoin --run_test=wallet_tests/BasicOutputTypesTest --catch_system_errors=nopython3 build/test/functional/test_runner.py wallet_spend_unconfirmed.py wallet_sendall.py wallet_send.py wallet_fundrawtransaction.py wallet_bumpfee.py wallet_create_tx.py wallet_basic.pybuild/bin/bench_bitcoin -filter='WalletAvailableCoins|WalletCreateTxUseOnlyPresetInputs|WalletCreateTxUsePresetInputsAndCoinSelection' -sanity-check