Dependency Injection Container, попробовал на практике — не понял смысла?
Контейнер
Главная задача контейнера — переиспользовать сервисы более одного раза, например некий провайдер более чем в 1 месте или некий Sender в 20 местах по всему приложению. И упростить к ним доступ.
Более того именно контейнер помогает упростить некоторые другие участки приложения, например роутер, когда мы регистрируем роуты и их хэндлеры (контроллеры), то строим приложение таким образом, что все аргументы этих обработчиков и аргументы этих аргументов подтянутся из контейнера, то есть сильно убавят у нас проблем с управлением зависимостей и сделают сам код роутер (да и другой код) сильно проще и надежнее.
Взаимодействие относительно простых объектов/сущностей в рамках одного слоя лучше делать вашим способом — оно логичное и понятное и вообще контейнер будет только мешать, даже больше — не к месту в этой задаче. Это вам в ответе на том форуме и отметили.
Современные контейнеры предоставляют на самом деле еще ооочень много фишек: автовайринг, когда вам и конфиг писать не нужно, просто в конструкторе написали класс, а контейнер если нашел такой класс, то сам и сконфигурирует (и также учтет его параметры конструктора), то есть разработчику остается работа только с уникальными и не стандартными ситуациями. 
Или дает упрощенные фабрики/билдеры/декораторы.Dependency InjectionИ в будущем удобно будет тестировать ?
С контейнером или нет, с DI тестирование становится возможным по определению и будет относительно простым в любом случае.
Главное не объединяйте эти два понятия. Сам паттерн — просто частный случай инверсии зависимости, класс получил зависимость через конструктор/сеттер, и все, он не знает деталей, потому и тестить проще — просто подменил на пустышку. 
А контейнер — средство для работы со сложным приложением, которое внедряет как раз таки, то есть выполняет работу внедрения. Центральное в нем — слово контейнер.Несколько точек входа
По поводу ваших точек входа: несколько точек входи = несколько иницализаций.
Как-бы они разные по своей сути приложения уже по определению получаются.
Но вы можете упростить, и вынести инициализацию контейнера в абстракцию — в некий класс App/Kernel и там это делать, а в точке входа инициализировать не контейнер раз за разом, а именно конкретное приложение.
В общем не читал вопрос. 
Когда нужно протестировать код: тебе нужно подменять объякты для того чтоб не тестировать зависимости(при юнит тестах). То есть у тебя будет жесткая связь.
Плюс если у Вас есть опыт, прочитайте 150 страниц совершенного кода, все встанет по местамю.