in v0.12 https://github.com/bitcoin/bitcoin/pull/7081 (by @luke-jr) was merged adding `-bytespersigop` (with default of 20).

this is preventing simple bare multisig transactions from being accepted into mempool when the size is < 400 bytes.  
eg; https://gist.github.com/rubensayshi/ac4f617207f7a50559e85d61c05800be

from 1-of-7 and onwards they are accepted because the ratio of bytes:sigops is high enough.  
also having 2 or more inputs will work because it again tips the ratio of bytes:sigops over.

the reason mainly being that `GetLegacySigOpCount` calls `GetSigOpCount` with `fAccurate=false`.

It looks like changing `GetLegacySigOpCount` to use `fAccurate=true` would cause side effects in the few other places (`ConnectBlock`, `CheckBlock`, `CreateNewBlock`) and simply adding `fAccurate` as arg to `GetLegacySigOpCount` would affect the value stored in `CTxMemPoolEntry.sigOpCount` which in turn affects a bunch of other things.

* 1000/sec if we have fast peers, so we pick 120,000 to give our peers a
     * two minute window to send invs to us.
     *
     * Decreasing the false positive rate is fairly cheap, so we pick one in a
     * million to make it highly unlikely for users to have issues with this
     * filter.
     *
     * Memory used: 1.3 MB
     */
    boost::scoped_ptr<CRollingBloomFilter> recentRejects;
    uint256 hashRecentRejectsChainTip;
    
    struct QueuedBlock {
        uint256 hash;
        CBlockIndex* pindex;                                     
        bool fValidatedHeaders;                                  
        std::unique_ptr<PartiallyDownloadedBlock> partialBlock;  
    };
    map<uint256, pair<NodeId, list<QueuedBlock>::iterator> > mapBlocksInFlight;
    
    list<NodeId> lNodesAnnouncingHeaderAndIDs;
    
    int nPreferredDownload = 0;
    
    set<CBlockIndex*> setDirtyBlockIndex;
    
    set<int> setDirtyFileInfo;
    
    int nPeersWithValidatedDownloads = 0;