Можно просто периодически запускать мусорщик, который будет сканировать все статьи и помечать удалять неиспользуемые картинки.
Например запускается проверка, обновляется таймстамп в базе картинки, которая была найдена. затем сортировка по таймстампу покажет какие картинки не были найдены во время этой проверки.
Можно просто добавить такую опцию в админку и запускать вручную, или раз в неделю/месяц в момент низкой активности.
Делать проверку при правке статьи нехорошо, потому что одна картинка может использоваться в разных статьях, а более сложная проверка - тормоза во время активности пользователя.
Раскидывать файлы по каталогам можно как удобно. Если ссылка на файл в базе - то вообще нет никаких особых правил, просто для удобства обслуживания хранить так, чтобы не тормозила файловая система (например не больше нескольких тысяч файлов в одной подпапке).