I would concur to the system. i think each package should be really twin packages: client package and server package it would allow skinnning etc. so graphics/sounds and interface sheets go into client package (and perhaps mod_interface.py for suggested by me interface scripts)
the idea is that server package must be the same between each client and server but client package may differ between clients. perhaps server package can store some default data for clients, but client don't have to make their graphics/sounds/windows be dictated by the server.
versioning will be something harder then - I agree one integer version may be enough for server packages - but client packages should have a range of versions of server package that current client package supports, it's own version independent of server package version, and override variable/constant - which just calls which one of "skins" it present (to not make client upgrade to different skin/clien_package_type, just because client package has bigger own version)
idea by majaczek