Неплохо было бы проверить, а ну как твои круги уже в одной плоскости или параллельных лежат (crossProduct.IsAlmostEqualTo(XYZ.Zero))
Неправильная ось поворота. Тут вообще говоря, возможны 2 способа:
1) Способ посложнее, но зато позволяет решить задачу за один поворот. Описываешь обе плоскости в каноническом виде Ax+By+Cz + D = 0, решаешь систему уравнений - получаешь уравнение прямой, выбираешь произвольную точку на ней
2) Способ попроще, возьми центр круга, который хочешь повернуть, но тогда дополнительно к Rotate ещё нужен Move, чтобы переместить в одну плоскость
В любом случае, нужно переделать создание оси поворота. Для этой оси можно задать unbound:
Line.CreateUnbound(origin, crossProduct.Normalize())
Для первого способа origin будет найденная точка, для второго, соответственно, центр круга