We have developed site domain functionality for 5.1.0 release (not yet commited, but patch available). It mostly changes in-portal, but also partially changes in-commerce data like payment types and currencies.
I propose, that we create separate tab for each module, with site domain settings, that are specific to individual module. Alternatively we could create "Properties" tab (like for Section editing), where fields are included from all system modules via m_ModuleInclude tag.
Also in-commerce-related fields in site domain are inserted via core module install_schema.sql file, which is not so good.
Of course new fields will be added to site domain via OnAfterConfigRead event, but site domain object is used in the middle of kApplication class initialization, so maybe we need to call kDBItem::defineFields() or something like that to update existing site domain object.