public static function setUnitsЭто хэлпер? Или модель? Если хелпер, то подобная лапша местами неизбежна. Если это модель - во превых какого там делает статический метод, во вторых, при наличии инициализации объекта(через конструктор или функции инициализации) можно(и нужно) разбить код на более простые универсальные методы, и уже их вызывать, например $this->start(); $this->finish(); и в этих методах активно оперировать внутренними свойствами объекта($this->clientDestination и тд).
в теории не есть хорошо переносить да и просто дублировать в отдельных таблицах. ибо все данные уже есть в одной общей.Вопрос нормализации/денормализации. В теории с нормальными формами все зашибись и красиво, на практике объемы выборки вносят свои коррективы. Денормализацию не от хорошей жизни используют, как раз случай как у вас, искусство построения хайлоад, в частности, найти что можно дешево денормализовать с минимальными потерями консистентности. Тот же редис и иже с ними - денормализация в чистом виде - дублирование и ускорение за счет консистентности хранимых данных. Так что - выносить без вопросов, счетчики же у вас не идут никуда в хранение - только промежуточно выносятся с каким-то интервалом в отдельную таблицу. Нарушения связей не происходит, только незначительное дублирование, это приемлемо.
$user->initByArray($_POST);
на продакшене в ничего так себе конторе.
На мотив "не кочегары мы не плотники"
В целях природы обуздания,
В целях рассеять неученья Тьму!
Берем картину мирозданья-да,
И тупо смотрим, что к чему...