FYI Интерфейсы, помеченные как ICloneable, не всегда глубоко копируются. Реализация ICloneable зависит от разработчика, и нет никакой гарантии, что он клонирует его.
Вы говорите, что объект не реализует ISerializable, но имеет ли он атрибут Serializable?
Создание глубокой копии с помощью двоичной сериализации, вероятно, является одним из самых простых методов, которые я знаю, поскольку вы можете клонировать любой сложный граф в 3-5 строк кода. Другой вариант - XmlSerializer, если объект может быть XmlSerialized (однако вы не указываете никаких атрибутов для сериализации или реализации интерфейсов, если у вас есть интерфейс IDictionary, который вы использовали.
Кроме этого я не могу думать ни о чем. Если все данные общедоступны, вы можете выполнить свою собственную процедуру клонирования. Если это не так, вы все равно можете клонировать его, используя рефлексию, чтобы установить личные данные.