Program Node template with nested XMLRPCalls

Then you are likely required to have the nodes in the tree, to enable the XML-RPC triggers between the waypoints.
The concern from a UX perspective I totally follow, and if it becomes to negative on the user experience side, I’d consider changing the state machine logic for a one-time fire.

To make the nodes unavailable to be added manually, you need to set the “UserInsertable” flag to false in the Service registration for the node.

To set the target ID to the child nodes, you should take a look at the “Custom API”. There is a sample here:

On the matter of boilerplate-reduction;
You can make an abstract implementation of the “XMLRPC Program Node Contribution”.
I assume the GUI and functionality of each node will be very much the same, so an alternative is to create an abstract class, which is extended by thin implementations that only care about the XML-RPC call, the node title and other small things that change - you could even set these in the constructor. For the View, you could re-use the same implementation and setup the differences from the Contribution. You can then do 3 Service registrations, calling the extending version of your Program Node Contributions.