If I was in your position, i'd use a view pager in combination with the bottom navigation component. This will manage the creation/deletion of fragments and should address your concerns with performance. It will also preload the previous/next screens for the user and can make the network calls on those screens before the use even goes to them.
Here is a pretty simple link showing this being done:
http://www.truiton.com/2017/01/android-bottom-navigation-bar-example/
To address your question why not to use activities, this kind of widget and situation is exactly what fragments were created for. They can easily be nested inside of an activity and swapped between. Activities weren't created to be nested inside one another. Instead you'd have to have a bottom navigation view as part of each of the activities, and manage the switching for each of them. You'd lose the animation of swapping between them. Not only would this create a lot of unnecessary and duplicate code, but activities are heavier and you lose the nesting aspect.
This is exactly what fragments are meant for. I've followed this paradigm on several applications that sound similar to yours, network requests on each screen, fairly complex layouts on each tab. This is a pretty standard way to go about it. Hopefully this helps, let me know if you need a further explanation.