Use case: **decouple keys from the wallet** (via importing scripts and fundrawtransaction with watch-only).

**Problem:** multisig inputs are flagged as non-spendable even if importing both the multisig P2SH `scriptPubKey` and the `redeemScript` (via importmulti).

The current `isSolveable()` logic calls `GetPubKey()` and only flags them as solvable if the pubkeys are **in the wallet**.

**Expected behaviour:**
* multisig Inputs should be flagged as solvable (and therefore usable via fundrawtransaction) when importing the P2(W)SH `scriptPubKey` and the `redeemScripts`

Current workaround:
* Call importpubkey for all pubkeys used in the multisig (redeemScript). importpubkey derives all coming scripts (including a raw P2PK script). The P2PK scripts make the wallet store the pubkey and flag the multisig script solvable.
{
    input.scriptSig = data.scriptSig;
    input.scriptWitness = data.scriptWitness;
}
void SignatureData::MergeSignatureData(SignatureData sigdata)
{
    if (complete) return;
    if (sigdata.complete) {
        *this = std::move(sigdata);
        return;
    }
    if (redeem_script.empty() && !sigdata.redeem_script.empty()) {
        redeem_script = sigdata.redeem_script;
    }
    if (witness_script.empty() && !sigdata.witness_script.empty()) {
        witness_script = sigdata.witness_script;
    }
    signatures.insert(std::make_move_iterator(sigdata.signatures.begin()), std::make_move_iterator(sigdata.signatures.end()));
}
bool SignSignature(const SigningProvider &provider, const CScript& fromPubKey, CMutableTransaction& txTo, unsigned int nIn, const CAmount& amount, int nHashType)
{
    assert(nIn < txTo.vin.size());
    MutableTransactionSignatureCreator creator(&txTo, nIn, amount, nHashType);
    SignatureData sigdata;
    bool ret = ProduceSignature(provider, creator, fromPubKey, sigdata);
    UpdateInput(txTo.vin.at(nIn), sigdata);
    return ret;
}
bool SignSignature(const SigningProvider &provider, const CTransaction& txFrom, CMutableTransaction& txTo, unsigned int nIn, int nHashType)