Admin: optimize search filter construction

Using the database this way is inherently slow but the previous
implementation would call QuerySet.filter() once per
whitespace-separated term in the query text, causing an extra set of
JOINs for each term. With the MySQL backend, this actually causes
database errors once you hit the server limit of 61.

This commit makes two changes: the first is simply to filter the
queryset only once; the second is to only process unique terms in the
search field.