Adding anything new like that requires inserting new data all over the place, typically there's no slack space in the exe to fit anything more in. You have to code around every single access which is too much work. Also, each magic effect requires its own function, animations need AI modification to recognize it exists, and the weather is the closest thing to possible I guess.
Last I saw, Morrowind had a few hundred kilobytes of empty space (end of segments mostly) lying around the executable. I'd have to check again to tell you exactly how much and where, but I know there's a decent bit. Dunno if it'll help, but if you call a function you've added there, and use your new function to call the old function, it may work (replace the original call to A with a call to the new B, then have B call A before returning). I don't know how calls work in asm as far as memory (shouldn't touch any registers but... esp? I'm really not sure), but that may be possible.
Also: I make a little progress on this a while back, but a fix for the limits of animation can be somewhat achieved by removing the note tag checks. Instead of adding new valid tags, just remove the check entirely and it may work. I once made a penguin play the group thisthat using a script. PlayGroup would need fixed (the script/console command) to make it really functional. However, removing the check (it needs removed on loading models, running the script command (two places I think), and the console command) does fix the issue.