addmultisigaddress creates an address respecting the setting, being unable to generate a specific type of address without also adding it to the wallet seems wrong.

I suppose in the future `addresstype` may be refactored to be wallet-specific, which would leave this non-wallet rpc call without an argument. Perhaps there should just be an optional parameter to set it.
{
        return CalculateMaximumSignedInputSize(tx->vout[out], pwallet);
    }
    void GetAmounts(std::list<COutputEntry>& listReceived,
                    std::list<COutputEntry>& listSent, CAmount& nFee, std::string& strSentAccount, const isminefilter& filter) const;
    bool IsFromMe(const isminefilter& filter) const
    {
        return (GetDebit(filter) > 0);
    }
    
    bool IsEquivalentTo(const CWalletTx& tx) const;
    bool InMempool() const;
    bool IsTrusted() const;
    int64_t GetTxTime() const;
    int GetRequestCount() const;
    
    bool RelayWalletTransaction(CConnman* connman);
    
    bool AcceptToMemoryPool(const CAmount& nAbsurdFee, CValidationState& state);
    std::set<uint256> GetConflicts() const;
};
class COutput