You were quite near. The code should look like this:
terminal.SendToServer(New ConsoleKeyInfo(Chr(27), ConsoleKey.Escape, False, False, False))
It is because the ConsoleKey.Escape value is not handled by the terminal explicitly, so the ConsoleKeyInfo.KeyChar is used. Actually, it is easy to handle ConsoleKey.Escape in terminal, so I will add this functionality. All your cases will work in the next release.
Basically, you want to send a string which contains two escapes. The easiest way is the following:
VB .NET
terminal.SendToServer(Chr(27) & Chr(27))
C#
terminal.SendToServer("\x1B\x1B");