I was messing around with min relay policies and found that under certain circumstances the mempool will accept things, then not relay to any peers.

Example made using wallet:
Transaction of size 6195, fee of 619 satoshis, minrelay of 100 satoshis per kvB. Mempool logic allows it:

```
        // No transactions are allowed below minRelayTxFee except from disconnected blocks
        if (!bypass_limits && nModifiedFees < ::minRelayTxFee.GetFee(nSize)) {
            return state.DoS(0, false, REJECT_INSUFFICIENTFEE, "min relay fee not met", false, strprintf("%d < %d", nModifiedFees, ::minRelayTxFee.GetFee(nSize)));
        }
```
and lets it into mempool

but in net_processing.cpp:

```
                    if (filterrate && txinfo.feeRate.GetFeePerK() < filterrate) {
                        continue;
                    }
```
this gets hit because the computed feerate is insufficient(printing I added):
```
0.00000099 BTC/kB
```

I'm not super at arithmetic so I'm opening this up in case someone has an easy fix. 

let me also get a reproducible test failure with this...
*   (m_tx_announced).  We also clear g_already_asked_for for that entry, so
     *   that if somehow the transaction is not accepted but also not added to
     *   the reject filter, then we will eventually redownload from other
     *   peers.
     */
    struct TxDownloadState {
        /* Track when to attempt download of announced transactions (process
         * time in micros -> txid)
         */
        std::multimap<std::chrono::microseconds, uint256> m_tx_process_time;
        
        std::set<uint256> m_tx_announced;
        
        std::map<uint256, std::chrono::microseconds> m_tx_in_flight;
        
        std::chrono::microseconds m_check_expiry_timer{0};
    };
    TxDownloadState m_tx_download;
    
    bool m_is_inbound;
    
    bool m_is_manual_connection;
    CNodeState(CAddress addrIn, std::string addrNameIn, bool is_inbound, bool is_manual) :
        address(addrIn), name(std::move(addrNameIn)), m_is_inbound(is_inbound),
        m_is_manual_connection (is_manual)
    {
        fCurrentlyConnected = false;
        nMisbehavior = 0;
        fShouldBan = false;
        pindexBestKnownBlock = nullptr;