Не совсем согласен. Если взять, например, С, то там break, continue, exit были изначально. Был и оператор goto.
Был также и оператор return. Все это операторы изменяющие ход выполнения программы. Добавим сюда также операторы цикла, условные операторы и вызов функций - они также изменяют ход выполнения программы. Все это разные операторы и говорить, что это все goto - не верно. У каждого своя функция. Ссылаться на то, на языке процессора многие из этих операторов реализуются с помощью команды jmp - также не корректно, поскольку для какого-то другого процессора это может быть и не так. Так что смешивать я бы не стал. Это первый мой тезис.
Второй тезис заключается в том, что если убрать оператор goto, то без него вполне можно обойтись. Примеры имеются. И нет такого примера, который бы нельзя было реализовать без goto (скажем на C).
Третий тезис - использование goto может затруднить анализ программы.
Четвертый тезис. Такой новый язык, как C# по каким-то непонятным причинам содержит оператор goto.
Так что трансформации в новые формы старого goto я не очень вижу.