Я выбрал вариант глубокого копирования через сериализацию. Альтернативный вариант рассматривался через отражение (reflection).
Однако, сериализация наиболее удовлетворяет тем, что структура класса заранее неизвестна. Создан пользовательский класс Person, в нем фигурируют все необходимые структуры данных из задания (рекурсия, ссылка другой класс, список списков)
Ссылка на msdn: "Serialize the object to be deep copied, and then restore the serialized data to a different object variable."