`bitcoind` and `bitcoin-qt` crashes when creating a PSBT with `walletcreatefundedpsbt`

**Expected behavior**

`bitcoind` and `bitcoin-qt` should not crash and users should not see assertion errors on mainnet. Failing gracefully with some error message would be better. Although I was not able to reproduce this issue on Fedora so ideally this should be fixed.

**Actual behavior**

Error in bitcoind:

```
Assertion failed: selected_effective_value >= target, file wallet/coinselection.cpp, line 391
```

Error in bitcoin-qt:

![image](https://user-images.githubusercontent.com/94559964/192375828-d8e6f628-f52c-4aa8-ae99-19c2fe1a4934.png)


**To reproduce**

1. Create bitcoin.conf 

```
signet=1
txindex=1

signet.rpcport=38332
rpcuser=user
rpcpassword=pass

fallbackfee=0.0004
```

2. Add descriptor in a wallet using bitcoin-qt console:


```
importmulti '[{ "desc": "sh(multi(2,[aa130fed]02de62833c851509cf13c0c63e0dc3ef7b74f7d86b17e9090fab68c09830cb2f2e,[00890d8d]03cf11a2bc1371dad3691bce59e37d85b12aae6b030b533d4e7c5aedeb47a5ec0e))#j8w6g6zg", "timestamp":"now"}]'
```

3. Create PSBT using bitcoin-qt, click on different options in the error message and you will notice it creates PSBT with no change by clicking 'ignore' 3 times else crashes with others:

```
walletcreatefundedpsbt "[{\"txid\":\"e911734bf711009dd6057c88bc598df2d31c18d1cc6bd6c790a704b519d77e68\",\"vout\":0}]" "[{\"tb1q9fxp2p0sm93jdlul8v3svzn7x69zcd9ljsgans\":\"0.0009\"}]"

```

4. Close bitcoin-qt and open powershell or command prompt to create PSBT:

```
bitcoind.exe
````

```
bitcoin-cli.exe -rpcwallet=M1 walletcreatefundedpsbt "[{\"txid\":\"e911734bf711009dd6057c88bc598df2d31c18d1cc6bd6c790a704b519d77e68\",\"vout\":0}]" "[{\"tb1q9fxp2p0sm93jdlul8v3svzn7x69zcd9ljsgans\":\"0.0009\"}]"
```

**System information**

Windows 10

Bitcoin Core Master Branch


const auto result6 = KnapsackSolver(KnapsackGroupOutputs(available_coins.All(), *wallet, filter_confirmed), 7 * CENT, CENT);
        BOOST_CHECK(result6);
        BOOST_CHECK_EQUAL(result6->GetSelectedValue(), 7 * CENT);
        BOOST_CHECK_EQUAL(result6->GetInputSet().size(), 2U);
        
        const auto result7 = KnapsackSolver(KnapsackGroupOutputs(available_coins.All(), *wallet, filter_confirmed), 8 * CENT, CENT);
        BOOST_CHECK(result7);
        BOOST_CHECK(result7->GetSelectedValue() == 8 * CENT);
        BOOST_CHECK_EQUAL(result7->GetInputSet().size(), 3U);
        
        const auto result8 = KnapsackSolver(KnapsackGroupOutputs(available_coins.All(), *wallet, filter_confirmed), 9 * CENT, CENT);
        BOOST_CHECK(result8);
        BOOST_CHECK_EQUAL(result8->GetSelectedValue(), 10 * CENT);
        BOOST_CHECK_EQUAL(result8->GetInputSet().size(), 1U);
        
        available_coins.Clear();
        add_coin(available_coins, *wallet,  6*CENT);
        add_coin(available_coins, *wallet,  7*CENT);
        add_coin(available_coins, *wallet,  8*CENT);
        add_coin(available_coins, *wallet, 20*CENT);
        add_coin(available_coins, *wallet, 30*CENT); 
        
        const auto result9 = KnapsackSolver(KnapsackGroupOutputs(available_coins.All(), *wallet, filter_confirmed), 71 * CENT, CENT);
        BOOST_CHECK(result9);
        BOOST_CHECK(!KnapsackSolver(KnapsackGroupOutputs(available_coins.All(), *wallet, filter_confirmed), 72 * CENT, CENT));
        
        const auto result10 = KnapsackSolver(KnapsackGroupOutputs(available_coins.All(), *wallet, filter_confirmed), 16 * CENT, CENT);
        BOOST_CHECK(result10);
        BOOST_CHECK_EQUAL(result10->GetSelectedValue(), 20 * CENT);