In Linux prior to the funky Debian Upstart stuff, there were runlevels, or so-called init-levels.
In Windows, you can specify services to be dependant on others. Windows will (at least it claims it does) start the services in the right order. 😉
The quick-and-dirty way with upstart is probably to edit the mt-daapd start script and force an avahi-daemon restart.
Or, in Ubuntu Edgy and probably Feisty too, avahi-daemon does not start automagically in system start. You can change this preference in the avahi-daemon.conf (or likewise)