А так, если на гридах, то, для удобства чтения\разработки сделать сетку 3 на 3, задать именованные области через grid-area, а потом обойти картинки и назначить им эти зоны через Math.random, не забыв исключать уже назначенную.
Кирилл, нет, доделать пункты: "взять первые 4, расположить картинки по блокам с соответствующими номерами."
Не знаю как разметка устроена, поэтому не подскажу. Но по сути - перебрать массив картинок, каждую расположить на месте, которое соответствует числу в массиве.
sredatv они вроде как используют Isotope. Библиотеки Isotope, Masonry, Shuffle или Packery. Эти библиотеки они предоставляют инструменты для создания динамических макетов сеток на веб-страницах.