Так как числа не случайные, а псевдослучайные, для их генерации используется определенное семя, которое в пределах одного цикла вычислений одно и то же. Решение - не создавать второй инстанс Random, а использовать предыдущий: int index_n2 = rand_name.Next(name2.Length);
P.S. Не используйте goto, это плохая практика в C#