Хранить для каждого пользователя состояние - какие фильтры выставлены, какая позиция в списке была просмотрена последней.
Чтобы выбирать данные из БД начиная с этой позиции, отсортируй данные и используй OFFSET и LIMIT. Гарантии того, что какие-то новые элементы не будут пропущены, это не даст, но зато очень простая реализация. Хранишь для пользователя OFFSET, а про нажатии "дальше" увеличиваешь его на LIMIT.