Не совсем понял, откуда взялось это ограничение — строгое разделение на слои?
Из удобства обучения. Градиентный спуск в разделенной на слои сети сводится к умножению матриц (и поэлементному применению нужной нелинейности). Хотя есть и варианты, когда мы подключаем слой не только к непосредственно следующему за ним, но и к более глубокому (т.е. разные пути от входа до выхода имеют разную длину) - MS недавно с помощью такой архитектуры первое место на не-помню-каком-мероприятии заняли.
А если разрешить циклы, то вообще непонятно, как считать выход.