I don't know anything about Vixen and don't care to. But I did have an idea I want to implement where you can chain models. So instead of giving a specific channel to a model you would have the option to say element2 starts where element1 ends. By the way I inserted new stuff into my display no problem because I always allocate full universes.
Actually, come to think of it, it's not Vixen's double indirection that solves this. It's that they bind to the name of a Network+Offset instead of a running channel number. So another solution would be for the user to be able to name the E131 / USB (or whatever) entry in xLights setup, and then have the model be able to bind to the Entry + Offset from it. That would make things more resilient to changes.
Chaining elements would help, but I've never hooked elements up the same way two years in a row, so it will still be an effort to go through them again to fix things up.
Either way, the real beauty of xLights is the dead simple XML file format. So I'll more than likely just build something this year that take my growing Excel spreadsheet of lights & universes and convert it directly to xlights_rgbeffects.xml.
Wish I can set up FPP and my controllers from it at the same time. Screen scraping comes to mind...