just for the record, I figured this out and wanted to post the answer for anyone that needs it in the future.
'then get thread replies
Dim nodesPostNumber As HtmlNodeCollection = threadDoc.DocumentNode.SelectNodes("//form[@class='action_heading noprint']/following-sibling::div[contains(@id, 'r_')]")
Dim replies As New List(Of ThreadReply)
If Not nodesPostNumber Is Nothing Then
Dim intNumberOfReplies As Integer = nodesPostNumber.Count
For i = 1 To intNumberOfReplies
Dim nodeReplyDate As HtmlNode = threadDoc.DocumentNode.SelectSingleNode("//form[@class='action_heading noprint']/following-sibling::span[@class='small soft' and position()=" + i.ToString + "]")
Dim strXPathForDate As String = nodeReplyDate.XPath
Dim strReplyText As String = threadDoc.DocumentNode.SelectSingleNode(strXPathForDate + "/following-sibling::div[@class='quote_item']").InnerHtml
strReplyText = Left(strReplyText, InStr(strReplyText, "<div class=""noprint""") - 1)
Dim strReplyAuthor As String = threadDoc.DocumentNode.SelectSingleNode(nodeReplyDate.XPath + "/preceding-sibling::strong").InnerText
Dim strReplyDate As String = nodeReplyDate.InnerText.Trim
strReplyDate = strReplyDate.Remove(0, InStr(strReplyDate, ", ")).Trim
strReplyDate = Replace(strReplyDate, "'", 20)
strReplyDate = Replace(strReplyDate, "via mobile", "")
Dim thisReply As New ThreadReply With {.Author = strReplyAuthor, .DatePosted = strReplyDate, .ThreadID = thisThread.ThreadID, .Text = strReplyText}
replies.Add(thisReply)
Next
End If
So, it's about "grabbing" the node that was used for 1 reply and using it in xpath again to make sure you only get replies that come AFTER the node you grabbed. I did this by using HTMLNode.Xpath which gives you the xpath string for any given HTMLAgilityPack.htmlnode and then adding "/following-sibling".