I agree with everything you've said. It does need a serious re-write, I'm a pretty lame coder, and as with most open source projects, the challenge is finding the time to do that. Much of the code is evolutionary. Up until now, I've been busy putting in features that pay the bills, and have only had bits of time to do under-the-hood work, and I also only recently have a second developer on the team (more is welcome!). I'm doing a fair bit of extracting functionality and putting them into modules this summer, so version 0.6.2 or whatever I come out with next will have a number of modules, instead of many of those repeated functions, etc.
One of the strategies I have been thinking of is using templating. XINA now uses templating to some degree, but it's hand-rolled and clunky (to say the least.) I'm trying to find ways to both make it easy for me to use templates, as well as end-users, without too much hassle.
Thanks for the suggestions!