After some digging, a colleague found a reference to a similar question on one of the Adobe forums. Here is an implementation of the algorithm proposed in that post (thanks Noam!):
private function getElementPosition(link:LinkElement):Point {
if (!link) return null;
var absoluteStart:int = link.getAbsoluteStart();
var textLine:TextLine = link.getTextFlow().flowComposer.findLineAtPosition(absoluteStart).getTextLine(true);
var rect:Rectangle = textLine.getAtomBounds(textLine.getAtomIndexAtCharIndex(absoluteStart));
return textLine.localToGlobal(new Point(rect.x, rect.height+rect.y));
}
I've tested this and it seems to do the job. Just wanted to share it for the sake of anybody else interested in the same problem in the future.