Проблема в том, что
1) не надо использовать фрагменты из платформы (android.app.Fragment). Нужно использовать из саппорт либы.
2) в ветке else, там где getChildFragmentManager. Если посмотреть реализацию этого метода, станет понятно, что внутри него создаётся новый фрагмент менеджер, в котором, естественно, нет фрагмента this.
При коммите такой транзакции фрагмент менеджер проверяет, находится ли тарегт фрагмент в том же менеджере, что и тот, кому его выставили. Не находится. И падает.
Исправить просто. Те фрагменты, что находятся в child fragment manager'e, могут получить доступ к parent'у(в данном случае - this) через getParentFragment.