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. 
} else if (type == TxoutTypeSCRIPTHASH) {
            any_sh = true;
        } else if (type == TxoutTypePUBKEYHASH) {
            any_pkh = true;
        }
    }
    const bool has_bech32m_spkman(GetScriptPubKeyMan(OutputTypeBECH32M, /*internal
    if (has_bech32m_spkman && any_tr) {
        // Currently tr is the only type supported by the BECH32M spkman
        return OutputTypeBECH32M;
    }
    const bool has_bech32_spkman(GetScriptPubKeyMan(OutputTypeBECH32, /*internal
    if (has_bech32_spkman && any_wpkh) {
        // Currently wpkh is the only type supported by the BECH32 spkman
        return OutputTypeBECH32;
    }
    const bool has_p2sh_segwit_spkman(GetScriptPubKeyMan(OutputTypeP2SH_SEGWIT, /*internal
    if (has_p2sh_segwit_spkman && any_sh) {
        // Currently sh_wpkh is the only type supported by the P2SH_SEGWIT spkman
        // As of 2021 about 80% of all SH are wrapping WPKH, so use that
        return OutputTypeP2SH_SEGWIT;
    }
    const bool has_legacy_spkman(GetScriptPubKeyMan(OutputTypeLEGACY, /*internal
    if (has_legacy_spkman && any_pkh) {
        // Currently pkh is the only type supported by the LEGACY spkman
        return OutputTypeLEGACY;
    }
    if (has_bech32m_spkman) {
        return OutputTypeBECH32M;
    }