I don't think this is a good approach. We shouldn't be breaking API just because there is a new under-the-hood feature (wikibase). From the API client's perspective, it should work as before, plus there should be an extra flag notifying if the sitelink is stored in wikidata or locally. Sitelinks might be the first, but not the last change - e.g. categories, etc.
As for the implementation, it seems the hook approach might not satisfy all the usage scenarios:
* Given a set of pages (pageset), give all the sitelinks (possibly filtered with a set of wanted languages). Rendering page for the UI would use this approach with just one page.
* langbacklinks - get a list of pages linking to a site.
* filtering based on having/not having specific langlink for other modules. E.g. list all pages that have/don't have a link to a site X.
* alllanglinks (not yet implemented, but might be to match corresponding allcategories, ...) - list all existing langlinks in the site.