Overall, I think that looks like a really good plan! I'll offer this one suggestion that I thought of:
Rather than require a device to be smart enough to detect whether it's the last device in the chain or not, when the init command is sent out have the device do two steps:
1) Reply to the init with it's identifier (e.g. "!"[OIN][00][LL][01][Manufacturer ID][Model ID][Flags])
2) Forward the init command to the next device

This reduces the overall amount of traffic for detection of devices. If a device wants to know if it's last or not, it still has the option of watching for an inbound init reply.

--The Amigo
_________________________
--The Amigo