Как при получении всех экземпляров модели сразу загрузить, принадлежат ли они текущему пользователю?
Проверить негде, но может так сработает:Product::with([
            'user' => function($query) {
                return $query->where('user_id', \Sentinel::getUser()->id);
            }
        ])->get();
Если user не пустое значит куплено текущим пользователем
А почему костылить-то? 
Получаете две коллекции, вычитаете одну из другой в цикле или еще как, и выводите в зависимости от.
Это самое простое решение.