P2P kann man relativ sicher machen... Die Pakete kriegen eine nonstandard-Prüfsumme verpaßt; so können veränderte Pakete aussortiert werden.
z.B. könnte man sie als nicht empfangen betrachten; ein Cheater würde dann zwar seine modifizierten Pakete schicken, aber grundsätzlich einen Timeout kriegen.
Oder der Empfänger schickt einfach als Antwort ein Paket, das im aussagt "Paket X defekt empfangen, bitte nochmal schicken".
Ich denke nicht, daß jemand ohne Zugriff auf den Quellcode des Netcodes und der Prüfsummenfunktion in der Lage sein dürfte, ein Paket ohne größeren Aufwand zu faken. Und wenn das nicht reicht jagen wir die Daten noch durch ein kaskadierendes XOR oder so.
Außerdem könnte man auch einem Server ein verändertes Paket schicken, bzw. den Server verändern um zu schummeln.

Der DS muß natürlich ein Windows-Server mit vollem Shellzugriff sein, auf dem man beliebige Programme ausführen darf (es sei denn, der DS wird als eigene Projekt für Linux geschrieben, dann brauchen wir einen Linux-Server). Ich weiß nicht, ob die Kombination so zur Verfügung steht.

Man könnte übrigens den Lobbyserver auch als einen Server umsetzen, der nur die Spiele koordiniert und gar nicht wirklich als Gameserver arbeitet. Im Wesentlichen würde der Lobbyserver aktive Gameserver auflisten und eine Verbindung zur Datenbank stellen: Gameserver können sich beim Lobbyserver an- und abmelden und werden dann für Spieler verfügbar.
Der LS würde auch mit P2P Sinn machen: Wie beim ED2k-Netzwerk sorgt der Server im Wesentlichen dafür, daß man weiß, welche Peers online sind und wie man sie erreichen kann. Über eine Art Chatfunktion würden die Spieler sich dann absprechen; sobald zwei anfangen, zu spielen, werden sie aus der Liste der verfügbaren Spieler genommen und der Rest des Datenverkehrs findet dann zwischen den beiden Peers statt.