Я думаю, вы должны иметь возможность использовать метод XmlReader.ReadOuterXml (), чтобы вернуть все поддерево в виде строки. Затем вы можете использовать его для создания StringReader и использовать его снова для создания XmlTestReader.
Коряво, но должно работать.
О. Кстати. ReadSubtree возвращает XmlSubtreeReader, который получен из XmlReader, поэтому вы не можете напрямую привести его к XmlTextReader.