Hi,
If you have a database name, you can use pywikibot.site.APISite.fromDBName('enwiki'). It currently only works for WMF sites, and the naming is a bit awkward...
Site object to code is as simple as pywikibot.Site('en', 'wikipedia').dbName(). It returns "enwiki".
By fetching the "imported from" statements from wikidata, it makes it easier for other uses to make updates and other scripts can use them in once place. Since it only gets fetched once during script initialization, I don't think that's too in-efficient, though it would be neat if we could cache it somehow.
Automatically creating a DataSite object if wikidata is requested sounds interesting. I don't think there is any time where having a regular Site object is an advantage to a DataSite object. I know that right now you can do pywikibot.Site('wikidata', 'wikidata', interface='DataSite').