V>Кто сказал, что они обратимые? Операция & в конце обратимая? Где гарантия, что два числа не дадут один и тот же результат по модулю (1<<48)-1 после умножения?
Операцию & в конце надо рассматривать в паре с *.

Это просто обрезание лишней части. Умножение по модулю 2**48 (не 2**48-1, аккуратнее!) действительно обратимо, если оно делается на нечетное число. В этом несложно убедиться, если a*n==b*n(mod 2**k), то (a-b)*n==0(mod 2**k), а это возможно только, если a==b (иначе умножение на нечетное n оставляет в произведении (a-b)*n единицу в первом двоичном разряде справа, где есть единица у (a-b).
V>Если даже это так, то насколько взятое наугад число дает хорошие характеристики получаемой случайной последовательности?
Отличные даст. Там такое перемешивание — каждый бит выхода зависит от каждого бита входа и по довольно сложному закону. Соседние числа в такой последовательности будут отличаться довольно радикально.
Кстати, насчет применения для решения этой задачи линейного генератора. У выхода такого генератора будет как минимум одна аномалия — он будет выдавать четные числа после нечетных и наоборот. Это старшие биты такого генератора более-менее случайны, не даром же сишный rand() выдает только 15 старших бит зерна. И то у него со статистикой не все в порядке. Я как-то пробовал пожать выход rand()%256 с помощью компрессора paq8 (это такой статистический упаковщик на основе нейронных сетей). Пожался. Насколько помню, где-то на 2%.
У моего решения есть пожалуй только один недостаток — оно несколько тяжеловато — 4 64-х битных умножения. Можно сделать и существенно быстрее, но надо будет повозиться с таблицами. Если это действительно критично, пиши, сделаю.