Если бы я был на вашем месте, я бы использовал пейджер просмотра в сочетании с нижним компонентом навигации. Это будет управлять созданием / удалением фрагментов и должно решать ваши проблемы с производительностью. Он также будет предварительно загружать предыдущие / следующие экраны для пользователя и может выполнять сетевые вызовы на этих экранах, прежде чем пользователь перейдет к ним.
Вот довольно простая ссылка, показывающая, как это делается:
http://www.truiton.com/2017/01/android-bottom-navigation-bar-example/
Чтобы ответить на ваш вопрос, почему бы не использовать действия, этот виджет и ситуация - именно то, для чего были созданы фрагменты. Они могут быть легко вложены в действие и поменяться местами. Действия не были созданы, чтобы быть вложенными друг в друга. Вместо этого вам нужно иметь нижнюю навигационную панель как часть каждого из действий и управлять переключением для каждого из них. Вы бы потеряли анимацию обмена между ними. Это не только приведет к созданию большого количества ненужного и дублирующего кода, но и к более активным действиям, и вы потеряете вложенность.
Это именно то, для чего предназначены фрагменты. Я придерживался этой парадигмы в нескольких приложениях, которые звучат похоже на ваше, сетевые запросы на каждом экране, довольно сложные макеты на каждой вкладке. Это довольно стандартный способ сделать это. Надеюсь, это поможет, дайте мне знать, если вам нужно дополнительное объяснение.