No problem.
Like you've said, Kentico 12 Dancing Goat doesn't really have the best practices here, which is why I suggested to take inspiration rather than directly copy.
What you could do is modify ArticleViewModel's GetViewModel method to resolve the URL directly and store against a property on the ViewModel, e.g.
public string Url { get; set; }
public static ArticleViewModel GetViewModel(Article article)
{
return new ArticleViewModel
{
NodeAlias = article.NodeAlias,
NodeGUID = article.NodeGUID,
PublicationDate = article.PublicationDate,
RelatedArticles = article.Fields.RelatedArticles.OfType<Article>().Select(GetViewModel),
Summary = article.Fields.Summary,
Teaser = article.Fields.Teaser,
Text = article.Fields.Text,
Title = article.Fields.Title,
Url = URLHelper.ResolveUrl(article.RelativeURL)
};
}
Then in the view you can use @article.Url
instead of @Url.ForArticle(article.NodeGUID, article.NodeAlias)
Ideally you need to change the Page Type to have a different URL pattern that doesn't use GUID too.