It turns out the arrays need to be stored in reverse order:
Function GetBytes(bi As BigInteger,length As Int32) As Byte()
Dim bytes() As Byte = bi.ToByteArray
If bytes.Length > length Then
Dim result(length - 1) As Byte
Array.Copy(bytes,result,length)
Array.Reverse(result)
Return result
Else
Array.Reverse(bytes)
Return bytes
End If
End Function