I am currently rebuilding a site's analytics code from scratch and for link tracking, the current implementation relies on CSS selectors with data- attributes. I've used this method in the past, but this makes me reliant on front-end changes, and could be liable to break during any new release. In the past, I've also used custom events passed to me through the front-end, but then that also makes the Launch implementation even more reliant on front-end releases (but less likely to break), thereby circumventing the whole notion of a tag manager.
From my point of view, your current approach is the best practice. The only addition I would advise to consider is when the link tracking is associated with single page applications (SPA). For SPA custom events or event based data layer may work better, primarily for the links that are triggering app state changes.