То, что вы хотите, флексы не умеют. У флексов ряд будет всегда по высоте самого высокого блока, блоки из следующего ряда туда не попадут.
Смотрите в сторону плагинов masonry, isotope
Hutson, Так-то, грид - сетка. От неё пробелы будут только больше, если блоки ещё и разной ширины будут. Возможно есть какие-то js плагины для реализации такой идеи, но решения чистыми html/css/js я не знаю, не считая того, что я уже написал