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.
class CTxMemPool;
class CBlockPolicyEstimator;
class CWalletTx;
struct FeeCalculation;
enum class FeeEstimateMode;
enum WalletFeature
{
    FEATURE_BASE = 10500, 
    FEATURE_WALLETCRYPT = 40000, 
    FEATURE_COMPRPUBKEY = 60000, 
    FEATURE_HD = 130000, 
    FEATURE_HD_SPLIT = 139900, 
    FEATURE_NO_DEFAULT_KEY = 159900, 
    FEATURE_PRE_SPLIT_KEYPOOL = 169900, 
    FEATURE_LATEST = FEATURE_PRE_SPLIT_KEYPOOL
};
constexpr OutputType DEFAULT_ADDRESS_TYPE{OutputType::P2SH_SEGWIT};
constexpr OutputType DEFAULT_CHANGE_TYPE{OutputType::CHANGE_AUTO};
class CKeyPool
{
public:
    int64_t nTime;
    CPubKey vchPubKey;
    bool fInternal; 
    bool m_pre_split; 
    CKeyPool();
    CKeyPool(const CPubKey& vchPubKeyIn, bool internalIn);
    ADD_SERIALIZE_METHODS;
    template <typename Stream, typename Operation>
    inline void SerializationOp(Stream& s, Operation ser_action) {