Dim strRecip As String
Dim strTo() As String = recipients.Split(";")
For Each strRecip In strTo
Instead of looping thru the array have you considered something like String.Join(",", strTo) ?
This allows you to let MS manage the looping and also inserts the comma between names. Since you Split(";") I wonder if it might be easier/quicker to recipients.Replace(";", ",") and thus no need for the array to begin with and you now have a comma separated list that the Address collection is looking for?
Cool function and thanks for a good demo of making a clr function for SQL Server.