That's fair. I've deliberately avoided converting all of that to devices because MAME's irritating "startup order is not guaranteed" policy means we could easily end up with a situation where sometimes it can find the media and sometimes not.
That's what dependencies are for. At startup, a device can query other devices it depends on and see if they are started. If they are not, it can call device_delay_init() and exit, meaning it will be re-queued to the end.