### Describe the issue
Because transaction malleability isn't that much of an issue lately, we've decided to let the wallet spend zero conf change. It has happened that we create a transaction just moments before a significant increase in (higher paying) transactions. Because of #9645, there is a chance that you end up with an unconfirmed chain of 24 child transactions. If you let the wallet produce a 25th child, it will return an error because the mempool won't accept it.  This is also problematic in the case we would like to cpfp the whole chain, because other nodes won't relay the transaction to the miners.

### Can you reliably reproduce the issue?
#### If so, please list the steps to reproduce below:
1. Predict an increase in transactions. (You need a crystal ball)
2. Create transaction
3. Create more transactions
4. ?
5. Profit

### Expected behaviour
Ideally it would stop if the chain is 24 transactions long, so one could try a cpfp transaction to compensate for the fees.

### Actual behaviour
It will create a transaction chain of 25 transaction, making it hard to have the whole chain confirmed in a certain time.

### What version of bitcoin-core are you using?
Official binary: 0.13.1
void UnsetBlankWalletFlag(WalletBatch& batch) override;
    
    const ArgsManager& m_args;
    
    interfaces::Chain* m_chain;
    
    std::string m_name;
    
    std::unique_ptr<WalletDatabase> const m_database;
    /**
     * The following is used to keep track of how far behind the wallet is
     * from the chain sync, and to allow clients to block on us being caught up.
     *
     * Processed hash is a pointer on node's tip and doesn't imply that the wallet
     * has scanned sequentially all blocks up to this one.
     */
    uint256 m_last_block_processed GUARDED_BY(cs_wallet);
    /** Height of last block processed is used by wallet to know depth of transactions
     * without relying on Chain interface beyond asynchronous updates. For safety, we
     * initialize it to -1. Height is a pointer on node's tip and doesn't imply
     * that the wallet has scanned sequentially all blocks up to this one.
     */
    int m_last_block_processed_height GUARDED_BY(cs_wallet) = -1;
    std::map<OutputType, ScriptPubKeyMan*> m_external_spk_managers;
    std::map<OutputType, ScriptPubKeyMan*> m_internal_spk_managers;
    
    
    std::map<uint256, std::unique_ptr<ScriptPubKeyMan>> m_spk_managers;
    /**
     * Catch wallet up to current chain, scanning new blocks, updating the best