Since #13666 our fee calculation assumes that ECSDA signatures are a maximum of 71 bytes, rather than 72. However, not all hardware wallets implement R-value grinding.

This can cause us to underpay fees when using an external signer. That's especially problematic when the user picks 1 sat/vbyte as the fee, because it won't even get into our own mempool.

The easiest solution would be to modify `ExternalSignerScriptPubKeyMan` to assume 72 bytes for ECSDA signatures.

Slightly more advanced would be to expand HWI to keep track of which devices and firmware versions (if any) support R-value grinding. We'd then have to store that in the wallet in some new field. Personally I'd rather work on better Taproot support, which thanks to Schnorr avoids this issue altogether. 
// the mempool. This does not necessarily result in those transactions being relayed,
// that depends on the `relay` option. Periodic rebroadcast uses the pattern
// relay=true force=false, while loading into the mempool
// (on start, or after import) uses relay=false force=true.
void CWalResubmitWalTransactions(bool relay, bool force)
{
    // Don't attempt to resubmit if th is configured to not broadcast,
    // even if forcing.
    if (!fBroadcastTransactions) return;
    int submitted_tx_count = 0;
    { // cs_wal scope
        LOCK(cs_wal);
        // First filter for the transactions we want to rebroadcast.
        // We use a set with WalTxOrderComparator so that rebroadcasting occurs in insertion order
        stdset<CWalTx*, WalTxOrderComparator> to_submit;
        for (auto& [txid, wtx]  mapWal) {
            // Only re
            if (!wtx.isUnconfirmed()) continue;
            // Attempt 
            // the las
            if (!force && wtx.nTimeReceived > m_best_block_time - 5 * 60) continue;
            to_submit.insert(&wtx);
        }
        // Now try submitting the transactions to the memory pool and (optionally) relay them.
        for (auto wtx  to_submit) {
            stdstring unused_err_string;
            if (SubmitTxMemoryPoolAndRelay(*wtx, unused_err_string, relay)) ++submitted_tx_count;
        }
    } // cs_wal
    if (submitted_tx_count > 0) {