Damit wären Daten einer Person über die Opt-In und SERIAL Variablen zugeordnet.
Wir sprechen streng genommen also nicht von anonymen Daten, sondern von pseudoynmen Daten. Falls Sie Anonymität gewährleisten wollten, müssten Sie umständlicher (und fehleranfällig) über persönliche Codes arbeiten und die Adressen im Datenschutzmodus "anonym" sammeln.
Wenn es Ihnen ausreicht, dass die Daten nicht gemeinsam in einer Datenzeile stehen, können Sie einfach einen dritten Fragebogen für die Bankdaten-Abfrage anlegen, und mittes multiLevelDown() dorthin umleiten. Dabei könnten Sie auch Daten mitgeben. Es versteht sich von selbst, dass die Zusammengehörigkeit von Studiendaten und Bankdaten schon aus der Reihenfolge im Datensatz hervor gehen würde. Aber falls Sie nach einer Minimal-Lösung suchen...
Eine komplette Trennung haben Sie wie oben dargestellt ohnehin nicht. Und wenn der Gewinnbetrag nicht auf 2 oder 3 unterschiedliche Beträge beschränkt ist, dann wäre auch bei ansonsten perfekter Trennung der Daten anhand des Betrags eine Zuordnung möglich. Wenn das ohnehin der Fall ist, brauchen Sie sich um aufwändigere Lösungen m.E. keine Gedanken mehr zu machen.
Aber sprechen wir nochmal von einer aufwändigeren Lösung. Sie könnten eine Frage zur separaten Erhebung der Kontaktdaten einbinden und per JaveScript in ein gesondertes Eingabefeld einen Code schreiben, welcher den Betrag kodiert. Dieses Feld könnten Sie sogar per JavaScript ausblenden (position: absolute; top: -9999px). Sie müssten die Kodierung nur ausreichend undurchschubar machen, damit sich nicht jemand einen besonders großen Gewinn gutschreiben kann.