A disclosure first: I'm an OMNeT++ Core Developer.
Whether you need dedicated simulation software or not depends on the abstraction level you need to simulate the actual communication. A network simulator package can help with:
Network protocol related effects. e.g. The behavior of the TCP protocol can indeed affect certain performance characteristics of a network. It makes absolutely no sense to implement your own TCP layer if there are simulators exactly for this purpose. The same is true with various routing protocols. Generally, if you feel that the protocol behavior can affect your results, then you should use these packages.
Mobility: these packages provide mobility management. i.e. they provide methods to manage/move your nodes in space over time.
Physical level modeling of communications: again it depends on the required level of abstraction. If you need to model something in free space, with high SNR, with relatively low throughput compared to the channel capacity then you may be able to write your own implementation. On the other hand, the problem quickly gets complicated if the signals may interfere with the environment, if there is noise, buildings, the network traffic is high enough to have signal collisions, the protocol has error correction etc.
Other infrastructure code like gathering and processing simulation results, running simulation campaigns, pseudo random number generators etc.
Creating a good simulation is an art. You should have a good feeling what effects should be simulated and set the abstraction level accordingly. If you create a too detailed simulation, your model will be slow and complex to write. If you create an abstract one, your simulation results will not match the real world behavior. As you realized, these things "seem" simple to implement if your abstraction level is high, but quickly get extremely complex once you want a bit more precise measurement and the bad thing is that just at the beginning, you may not be able to correctly estimate the abstraction level.
Just an example for your case: as long as your ground stations are distributed sparsely and evenly, modeling the communication channel with a simple baud rate and a packet error probability is just fine. As soon as traffic increases and grounds stations are closer to each other, collisions on the shared spectrum will happen and the throughput is heavily affected by this. Modeling the whole thing will be extremely complex.
I have deep knowledge only in OMNeT++/INET (so take a look at the other packages, too), but in INET you have different level of abstractions for the communication. You can set up a simulation to use only very simple (and fast) transmission methods (like you said, just an error and baud rate), but if need arises, you can swap it with a very detailed one that simulates the electromagnetic spectrum on a symbol level. I feel you will be OK with a high abstraction model, but you never know. You can have a model running on a flat terrain just fine and then receive a question: And how does it work in urban canyons? Uppsss...
In short, if you are doing something wireless, I would definitely go with a dedicated simulator just to be on the safe side.