Как насчет хранения адресов в виде текста (с разрешением новой строки). Почтовый индекс должен быть извлечен из адреса с помощью регулярного выражения (выбран на основе раскрывающегося списка стран) и должен храниться в отдельном столбце.
Это не относится к требованию "как можно более описательным", но в целом применение большего количества ограничений к формату данных приведет к отклонению процента действительных адресов. Это также займет больше места, чем один столбец varchar. Поэтому всегда будет компромисс между перечисленными вами требованиями.