Hallo,
ich weiß nicht, wie es anderen "Helfern" geht; ich habe jedenfalls keine Lust, erst Daten herunterzuladen, sie dann zu öffnen und zu studieren (um dann vielleicht festzustellen, dass ich mit diesem Thema nichts zu tun habe). Ich bevorzuge Fragen, die direkt mit Code erläutert sind.
So will ich mich auch nicht im Detail mit Deinen Problemen befassen. Aber eins ist klar, und das musst Du in Deiner Konzeption unbedingt ändern: Ein Array hat immer eine feste Größe (und ständig Resize aufzurufen, ist - wie Du gemerkt hast - mindestens lästig). Verwende stattdessen List<T> oder Dictionary<T, U>.
Gruß Jürgen