This is probably easiest, if you matched
template_group names to
sections of the site. You would basically create a custom query, that pull just not excluded channels. This assumes, there are some channels, where data is combined into a different section, or that are used for utility purposes, like
SELECT channel_title, channel_description, channel_name, channel_url, total_entries
NOT IN ('15','14','13','9','2','17','4')
ORDER BY FIELD(channel_name,'item2','item5','item4','item1');
You can also custom order them as needed. You don't need to pull
channel_description and other options if they won't be used.
You'd, of course still need the run the subqueries for generation, the page listings under the main
section navigation. But that should get you started. The primary point is to use MySQL's
NOT IN so you can list out the excluded items, since they are far less likely to change.
Though it occurs to me, if you don't have clients creating new template groups, why would you have them creating new channels. So this response, probably isn't exactly what you are looking for.