Обязательно ли оборачивать элементы ввода в тег FORM
Если отправляете данные через Ajax - то FORM вам вообще не нужен.
Также рекомендую ознакомиться с https://paramquery.com/ - даже в бесплатной редакции весьма мощная таблица.
Смотря, какое расширение. AdBlock, например, детектируют вполне успешно по косвенным признакам.
В большинстве случаев, конечно, определить это нельзя, но в некоторых можно.
Нужно очень хорошо знать специфику работы расширения и что конкретно оно делает со страницей.
Совсем-совсем неповторяемое? Тогда записывайте его в массив и после каждой генерации проверяйте наличие в массиве. Или в БД под индексом.
Как вообще сделать случайное число - javascript.ru/math.random
Можно также посмотреть в сторону guid
В куки запишите направление сортировки. И из кук доставайте потом.
Все равно пользователь если отметит "цены по возрастанию", то он с большой долей вероятности захочет, чтобы так было всегда. Так что куки - наилучшее решение.