Quando você mergulha na documentação do mysql e procure pela funcionalidade RAND() você verá que pode usar uma "seed".
Ao usar uma semente, você sempre obterá os mesmos resultados aleatórios.
Exemplo:
$products = Product
::all()
->orderBy(DB::raw('RAND(1234)'))
->paginate(4);
Você pode gerar sua própria semente e armazená-la em uma sessão ou algo para lembrá-la.
Atualizar
O construtor de consultas Laravel agora tem uma função que faz exatamente o mesmo:
$products = Product
::all()
->inRandomOrder('1234')
->paginate(4);