Есть ли какие то более распространенные и удобные варианты хранения подобного рода кук?
Мне кажется да, хранение в куках ID сессии пользователя в куках, а всей нужной информации - в БД, при этом ID-сессии будет какой-то единой строкой (состоящей из цифр, букв или чего-то ещё), которую достаточно прогнать через 1 фильтр, что бы избежать SQL-инъекций. А если Вы используете ORM, то они (ORM'ы) обычно умеют это делать самостоятельно (фильтровать данные, что бы избежать SQL-инъекций) и даже фильтры не нужны.
PHP имеет встроенный механизм сессий, в т.ч. с сохранение соотв. информации в куках, многие PHP-фреймворки так же имеют свои варианты реализации сессий.
Как уже отметил предыдущий автор ответа - размер кук ограничен, а base64, насколько я помню, увеличивает размер исходных данных на 1/3 (с "1/3" возможно я не совсем прав, не помню нюансов). Так же ограничено и количество кук на 1 домен.
Для удобства, сессии можно хранить, например в Redis'е, автоматически очищая информацию которой не пользовались N-времени.
Base64, как Вы заметили - это "кодирование", а не "шифрование".
Каждая кука передаётся с каждым HTTP-запросом, это
не ускоряет загрузку сайта.
P.S. К хранению информации для незарегистрированных пользователей я бы отнёсся довольно осмотрительно.