Если ты хочешь дробить стейт просто, чтобы избавиться от проблем рич модели, то ты обмениваешь гораздо более маленькую проблему на гораздо более серьёзную.
Контролировать инварианты нескольких стейтов гораздо сложнее, а в присутствии конкаренси или дистрибьютед превращается в архитектурную задачу.
Иными словами приносишь рациональность на алтарь Фаулера
Как раз нужно бить по инвариантам. А когда стейт не дробишь, что каждой функции приходится контролить все инварианты.
Ссылка которую я привел - там как раз об этом. И дистрибьютед становится легче