Dann würde ich es so machen, dass du für jedes Form erstmal einen Wert erzeugst und den samt timestamp und einem weiteren wert "used" in die Datenbank schreibst und gleichzeitig als hidden field mitsendest (evtl. auch nur den hash davon). Beim Absenden des Formulars überprüfst du dann, ob der Wert (bzw der hash) in der Datenbank existiert und ob das used-flag den wert 0 oder "nein" aufweist. Wenn das der Fall ist, setzt du für den gefundenen Eintrag den wert auf 1 bzw. "ja".
So muss für jede Registrierung immer schon einmal auch das Formular erneut abgerufen werden, um an den Wert zu kommen. Das heißt die Bots müssten zumindest angepasst werden. Dann kannst du noch prüfen, ob genug Zeit zwischen dem Ausliefern des Formulars und dem Absenden vergeht. Solange du den Benutzer nicht direkt damit konfrontierst, sondern die Information erstmal für dich behältst, dass als Bot erkannt wurde (indem du ihn nicht direkt aussperrst), kannst du erstmal ein paar Informationen sammeln. Das klappt natürlich nur, solange er nicht daran denkt, den Bot so zu programmieren, dass dazwischen eine gewisse Zeit verstreicht. Weiterhin kannst du so später die Anzahl der Registrierungen pro Minute einschränken.
Weitere Möglichkeit wäre halt eine Emailverifizierung, Login über Facebook o.ä., Angabe des Bankkontos, Funktionen des neuen ePA, Mehrfaches Anmelden mit einer IP begrenzen. Dadurch können die Registrierungen aber immer nur eine gewisse Anzahl eingeschränkt werden. Auch wird es schon wieder aufwändig und ob das machbar ist, hängt stark von deiner Anwendung ab. Außerdem schreckst du damit auch schnell echte Nutzer ab.
Es ist insgesamt halt schwer das komplett zu unterbinden, da zu viel im Browser bzw. vom Client beeinflusst werden kann. Es bleibt eine Kosten/Nutzung-Rechnung auf beiden Seiten (Betreiber und Bot-Nutzer/-Programmierer). Bei einem Onlinespiel, bei dem jeder zusätzlicher Account hilft, ist die Grenze bis es sich nicht mehr lohnt wohl sehr hoch. Evtl. wäre in so einem Fall aber eine Anpassung der Spielmechanik möglich, damit das keine so großen Auswirkungen mehr hat.