address_types.py test seems to fail intermittently on travis

It was mentioned in https://github.com/bitcoin/bitcoin/pull/11991#issuecomment-357922664 that this could be due to sync_mempools failing. A failure I saw looked like:

```
address_types.py failed, Duration: 14 s
stdout:
2018-01-12 23:14:39.513000 TestFramework (INFO): Initializing test directory /tmp/bitcoin_test_runner_20180112_231145/address_types_178
2018-01-12 23:14:48.747000 TestFramework (INFO): Sending from node 0 (['-addresstype=legacy']) without multisig using default
2018-01-12 23:14:51.012000 TestFramework (INFO): Sending from node 1 (['-addresstype=p2sh-segwit']) without multisig using default
2018-01-12 23:14:53.263000 TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/home/travis/build/bitcoin/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/test/functional/test_framework/test_framework.py", line 123, in main
    self.run_test()
  File "/home/travis/build/bitcoin/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/test/functional/address_types.py", line 183, in run_test
    assert_equal(unconf_balances[to_node], to_send * 10 * (2 + n))
  File "/home/travis/build/bitcoin/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/test/functional/test_framework/util.py", line 38, in assert_equal
    raise AssertionError("not(%s)" % " == ".join(str(arg) for arg in (thing1, thing2) + args))
AssertionError: not(0E-8 == 1176.25722960)
2018-01-12 23:14:53.263000 TestFramework (INFO): Stopping nodes
2018-01-12 23:14:53.577000 TestFramework (WARNING): Not cleaning up dir /tmp/bitcoin_test_runner_20180112_231145/address_types_178
2018-01-12 23:14:53.577000 TestFramework (ERROR): Test failed. Test logging available at /tmp/bitcoin_test_runner_20180112_231145/address_types_178/test_framework.log
2018-01-12 23:14:53.578000 TestFramework (ERROR): Hint: Call /home/travis/build/bitcoin/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/test/functional/combine_logs.py '/tmp/bitcoin_test_runner_20180112_231145/address_types_178' to consolidate all logs
```
https://travis-ci.org/bitcoin/bitcoin/jobs/328318030
"  {\n"
            "    \"height\": xxxx,\n"
            "    \"hash\": \"xxxx\",\n"
            "    \"branchlen\": 1          (numeric) length of branch connecting the tip to the main chain\n"
            "    \"status\": \"xxxx\"        (string) status of the chain (active, valid-fork, valid-headers, headers-only, invalid)\n"
            "  }\n"
            "]\n"
            "Possible values for status:\n"
            "1.  \"invalid\"               This branch contains at least one invalid block\n"
            "2.  \"headers-only\"          Not all blocks for this branch are available, but the headers are valid\n"
            "3.  \"valid-headers\"         All blocks are available for this branch, but they were never fully validated\n"
            "4.  \"valid-fork\"            This branch is not part of the active chain, but is fully validated\n"
            "5.  \"active\"                This is the tip of the active main chain, which is certainly valid\n"
            "\nExamples:\n"
            + HelpExampleCli("getchaintips", "")
            + HelpExampleRpc("getchaintips", "")
        );
    LOCK(cs_main);
    /*
     * Idea:  the set of chain tips is chainActive.tip, plus orphan blocks which do not have another orphan building off of them.
     * Algorithm:
     *  - Make one pass through mapBlockIndex, picking out the orphan blocks, and also storing a set of the orphan block's pprev pointers.
     *  - Iterate through the orphan blocks. If the block isn't pointed to by another orphan, it is a chain tip.
     *  - add chainActive.Tip()
     */
    std::set<const CBlockIndex*, CompareBlocksByHeight> setTips;
    std::set<const CBlockIndex*> setOrphans;
    std::set<const CBlockIndex*> setPrevs;
    for (const std::pair<const uint256, CBlockIndex*>& item : mapBlockIndex)
    {