На самом деле суть проблемы: вы плохо знаете JS. Сейчас объясню:
1) Например, принимаю данные с формы: собираю их по классам полей через jquery. Делаю это так: в обработчик кнопки отправки передаю this, то есть, получаю из функции доступ к элементу кнопки. Потом через closest получаю саму форму и через find ищу нужные поля. Это единственная технология, к которой я пришел, чтобы не иметь жесткой привязки к id полей...
Ну вот о чем здесь речь? А как же селекторы по аттрибутам (name?), или в конце концов классам? А как же $.fn.serializeArray, которая при наличии элемента формы сама получит все поля и вернет нам содержащий их массив? Да и слушать нужно событие submit, которое диспатчится на самом элементе формы, где уже можно через e.currentTarget (== this в jQuery) получить форму и просто вызывать один метод вместо кучи .find()
И получается или новая js-функция (а дальше и php)
Вынести функцию-хендлер отдельно и сделайте ее универсальной для обеих форм. (при чем тут php ???) Это при условии, что вторая, как вы сказали
Вроде похожая, но немного другая
Все это переносится в php
Не надо переносить фронтенд код в php.
Делайте сборку фронтенда отдельно, php отдельно, нет никакой причины по которой они должны общаться друг с другом, js работает со сгенерированным html. Если вам вдруг нужна переменная с бэкенда, есть куча способов передать ее без переноса фронтенд кода куда-либо.
И отвечая на вопрос из заголовка
Как избежать чрезмерных зависимостей в коде сложного веб-приложения?
Переходите на компонентый подход. Не важно, что это, БЭМ, ES6- и/или CSS- модули, решений множество. Если у вас есть универсальный компонент формы со своими зависимостями, стилями и скриптом, то проблем в коде сложного веб-приложения становится значительно меньше.