Прежде чем пытаться изобрести колесо - проверьте штатные возможности. Если вам ну прямо так очень хочется использовать uuid вместо более компактного и быстрого bigint - то такой тип данных уже есть в postgresql.
Хранится как фиксированной длины поле 16 байт.
Преобразованием его в bytea вы только увеличите, а не уменьшите его размер. Т.к. для bytea потребуется хранить ещё длину данных в этом поле.
С постгресом пока что на Вы и не могу понять что он от меня хочет.. Как я понял из интернетов он плохо воспринимает бинарник в UTF'е
В смысле так и задумано. Если у вас база в utf8, то все текстовые поля намеренно проверяются, чтобы в них было что-то валидное для utf8.