For future reference, this is how my solution looks like:
Public Overrides Function GetHashCode() As Integer
Dim hash As Int64 = 19
For Each Item As T In Me
hash = hash * 31 + Item.GetHashCode
hash = ((hash << 32) >> 32) + hash >> 32
Next
hash = ((hash << 32) >> 32)
Return CInt(hash)
End Function
There is some room for improving performance, the overflow only needs to be handled every 6 iterations for example