Bulk-fetch Django objects to minimise queries

Naively plucking the objects of the search results triggers a query per
item. Using Haystack's load_all functionality would fetch the items for
*all* search results, instead of just the ones in the current pagination
scope.

This method imitates what Haystack's load_all does, and operates on the
paginated search results. With it, the search changes don't incur
additional database queries compared to the category browsing that was
done before.