Я бы назвал кроссовер в этом контексте «неэффективным», а не «бессмысленным». Одним из способов устранения дублирования, о котором вы упомянули, может быть сортировка нейронов скрытого слоя в некотором каноническом порядке и использование этого порядка во время кроссовера, что может по крайней мере уменьшить дублирование, встречающееся в скрытом весовом пространстве.
Кроме того, вы можете подобрать веса выходного слоя более прямым методом, чем генетические алгоритмы. Вы не говорите, какая метрика производительности используется, но многие общие показатели имеют довольно простые оптимизации. Так, например, вы можете сгенерировать новый скрытый слой, используя генетические операторы, затем подогнать выходной слой по логистической регрессии и попросите GA оценить всю сеть.