Simplify the contacts filtering logic.

Filter then synchronize to replace the existing filtered list. Doing
both interleaved would have made sense if the filtering was threaded,
but when done in a blocking fashion it just adds complexity and
overhead for no gain.