Severely reduce the number of queries

Stop fetching discounts in each and every price lookup. Cache product variants between iterations. Select related models where it makes sense.

:warning: Depends on #178 as prefetch_related does not work with our `SubTyped`.