Bei den Get*ByIndex hast du wahrscheinlich Recht, das wird ein Copy&Waste-Relikt sein, dass nie aufgefallen ist
Zu deiner anderen Frage: Variablen sind Objekte, also könntest du dir alle benötigten Variablen in ein Array stecken und immer mir array[i].Value die Werte setzen. Dadurch sparst du dir viele Aufrufe, aber das Endergebnis bleibt gleich (sollte jedenfalls, ich kenn mich mit HAM mittlerweile selbst nicht mehr aus...)