Если отвечать на вопрос "как обойти экранирование"(ну вот, если у вас специфические вкусы:) ), то можно попробовать делать не Replace, а Remove.
Т.е. вы найдёте в вашем исходном тексте начало тега img по подстроке ""(или типа того). Получите из этих двух значений длину текста, который относится к этому тегу.
Дальше сделаете txt.Remove(startIndex, count).
Далее, вставите новое значение с помощью. txt.Insert(startIndex, readyLink) на место старого тега.
Тут самым "сложным" будет момент с тем,что у вас есть несколько тегов img,судя по наличию foreach.
Надеюсь, понятно объяснил мысль.
Ну а вообще да, сама глобальная проблема выглядит странно.