You are correct that the canonical representation grows rapidly complex. In fact it grows exponentially on the order of 2
n when
n is the number of inputs.
Using three DMux to make the DMux4Way is a good approach. You can use seven Dmux to make a DMux8Way, but if you use a combination of DMux and DMux4Way you can get it down to three lines of HDL.
One of the important concepts in Computer Science is the binary tree. As a data structure it lets you search for things efficiently; in an algorithm it lets you break larger tasks in half and repeatedly, often recursively, work with the data in smaller chunks. Here's a visual representation of a binary tree.
If you want more explicit help, ask me using "More|Reply to Author" and I'll be happy to help you off forum.
--Mark