External inputs are currently only supported for initial transaction creation functions. Extend `solving_data` arguments as necessary to support fee bumping wallet transactions with non-wallet inputs.

https://github.com/bitcoin/bitcoin/pull/17211#issuecomment-897653994
if (CreateTaprootScriptSig(creator, sigdata, provider, sig, pubkey, leaf_hash, sigversion)) {
            result = Vector(std::move(sig));
            return true;
        }
        return false;
    }
    
    if (auto match = MatchMultiA(script)) {
        std::vector<std::vector<unsigned char>> sigs;
        int good_sigs = 0;
        for (size_t i = 0; i < match->second.size(); ++i) {
            XOnlyPubKey pubkey{*(match->second.rbegin() + i)};
            std::vector<unsigned char> sig;
            bool good_sig = CreateTaprootScriptSig(creator, sigdata, provider, sig, pubkey, leaf_hash, sigversion);
            if (good_sig && good_sigs < match->first) {
                ++good_sigs;
                sigs.push_back(std::move(sig));
            } else {
                sigs.emplace_back();
            }
        }
        if (good_sigs == match->first) {
            result = std::move(sigs);
            return true;
        }
        return false;
    }
    return false;
}
static bool SignTaproot(const SigningProvider& provider, const BaseSignatureCreator& creator, const WitnessV1Taproot& output, SignatureData& sigdata, std::vector<valtype>& result)