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