Hi,
templates are just there as snippets, you simply copy paste them. Prefabs are much better to create reusable codes that are dynamic.
"Divide and conquer" is a good approach, I often create dummy gameObject to host particular features and its related Fsms, I also create "META" Fsm hosting only variables ( to avoid creating global variables), then any interested fsm can simply poll into that "META" fsm, everything is centralized for a particular feature, yet the logic is spreaded out into several fsm, it's very convenient.
So, yes your tactic is the right one in my opinion. Simply don't hesitate to create empty gameObjects, it's a lot more manageable than dozens of fsm on one gameObject, not need really.
bye,
Jean