Многие практикуют таскание целых объектов в сессии (потенциально в VIEWSTATE), разве можно их назвать "криворукими"?
Заметил еще одно неудобство VIEWSTATE/hidden: в приложении любые действия/события должны передаваться POST'ом.
А если куки использовать для этого? В этом случае програмер ограничен 4Кб и ему придется напрячься, чтобы вложить VIEWSTATE в этот объем (что, скорее + чем -).