I'm not sure if you've addressed using the Page Selector from the Insert/Edit views or not, but, I have a working implementation of that in one of my custom modules (Sitefinity 5.0.2500). It is only for selecting in-site pages, however. I would love to see a control that supported both internal and external links, but I understand the difficulties around storing the value.
On my data item, I have a guid called "PageGroupID". In my definitions file, I have the following defined for that field in my Insert/Edit view
var pageGroupField =
DisplayMode = displayMode,
WrapperTag = HtmlTextWriterTag.Li,
RootNodeID = Telerik.Sitefinity.Abstractions.SiteInitializer.FrontendRootNodeId,
Hopefully this will be helpful.