Yes, if implements DCE is not checked the message gets sent to the closest parent that does implement DCE. So your interface device should implement DCE (that's what talks to the i/o module), and the child devices (sensors, etc.) should not since you want those messages to go to the interface device. Do not check 'reroute messages to parent'. That means the message will not only go to theparent, but the destination of the message will also be changed in the router to point to the parent. So when your interface device gets the message it won't be able to see what child it was destined for. It won't come in the 'ReceivedCommandForChild', rather it will go to the interface device itself.
As far as implementing a plug and play system that adds the device and lets you pick the template after the fact, that's a tough one. I don't have a good answer for that. If you don't know the device template, then we won't even know what page to put it on (lighting, climate, security) so the user won't be able to find it after adding. My suggestion would be that when you detect a new sensor a message is displayed on all the orbiters saying 'what type of device is this: light switch, sprinkler, thermostat, siren, etc.' Let the user pick first, and add the device after the user picks. We already have a method for doing this. when you fire an event 'new pnp device detected', the general info plugin will intercept it and it contains lookups to see if that device requires special handling. For example, if you plug in a network storage device it asks several questions specific to the nas before adding the device. I would add another hook for all 'unknown i/o category' that displays the user a datagrid listing all devices in category 'environment' and has them pick the right one.