Your arguments in favor if Finite-state machine sound very reasonable. If you don't like the tool you tried to use I would suggest you develop your own framework, perhaps much more compact, less general and closed to your application field. Also, you can exclude code generation and rely on manual coding, but still based on FSM which can add strictness to your design and maintainability to your code.
The concept of FSM is fairly simple to be translated into programming domain in more or less straightforward development process. See http://en.wikipedia.org/wiki/Finite-state_machine
[EDIT] Look at my article Enumeration Types do not Enumerate! Working around .NET and Language Limitations
]. In this article I provide implementation of Cartesian Square indexed by enumeration (enumeration type represents a set of states of FSM) and describe a FSM built over the Cartesian Square.