Prima cosa che ho notato: temporaryArray contiene 102 elementi, mentre tu hai 100 Label, è voluto?
Seconda cosa: il ciclo For-Each-In itera su tutti i controlli nel form, non è che per caso hai anche altre Label oltre alle 100 previste dal gioco? Se così fosse verrebbero assegnati dei simboli anche a label che non centrano nulla col gioco...
Al posto del TryCast io avrei scritto:
codice:
For Each control In TableLayoutPanel1.Controls
If TypeOf(control) Is Label Then
Dim iconLabel As Label CType(control, Label)
Dim randomNumber As Integer = random.Next(icons.Count)
iconLabel.Text = icons.ElementAt(randomNumber)
iconLabel.ForeColor = iconLabel.BackColor
icons.RemoveAt(randomNumber)
End If
Next