Mostly separate engines make sense for separate things that aren't communicating with each other. If you have control logic and data structures that are already cooperating, then you might as well use just one engine.
Multiple engines interested in the same callback get called in sequence. The complexities of the order of calling engines and so forth is an open question on the TODO list. If you have just one engine calling multiple parts of your own code, you can do the right thing for your situation without addressing the utrace interface issues. That said, a core purpose of utrace is that multiple engines work just fine and don't add great overhead. Who knows how many kinks there are to work out to make that a reality, but that's the concept anyway. If separate engines makes sense in your code, it's perfectly sensible to just do it. Whether it's the ideal thing to do is optimization and refinement. Thanks, Roland