не надо писать ерунды. если человек не в состоянии написать производительный однократный обход массива, то никакой синтаксический сахар ему не поможет.
Полей должно быть столько, сколько нужно. Если в таблице с временем работы делается больше одной записи для пользователя одного пользователя - тогда она оправдана. Но если это просто вынесение пары полей в другую таблицу - смысла нет. Ладно, в любом случае сериализованный массив решает проблему. Только с картинками надо будет повозиться.
Дружочег. Единственная объективная вещь здесь - это код, который ты тут рядом насочинял. Мне его достаточно, чтобы сделать нужные выводы. Пили дальше свои 100500 таблиц и думай что так и надо.