Выход относительно простой: если есть элемент с несколькими колонками и без фиксированной высоты - брать grid вместо флексов. Проблема старая и в вашем случае любые другие решения кажутся костылями, имхо (в том числе хранить разделение на 2 колонки на бэкенде)
Что за холивар?) Это дело удобства же. Хотите - юзайте, хотите - нет. Тот же бутстрап мне, например, не нравится, в своих проектах я почти не использую css-фреймворки. Разве только для прототипов
Ну, задайте каждому внутреннему блоку ширину 50% и разрешите перенос как ответил @AndrewRook
Именно с flex-direction: column у вас без фикс. высоты ничего не получится
Каких хаков-то? Не знаю хака с паддингами. Если вы про margin-left: auto; // left - пример , то это ожидаемое поведение. На мой взгляд, это не совсем хак и удобнейшая вещь в некоторых случаях.