P2P has never been a problem before for halo.
Previous Halo titles also weren't doing as complex a simulation as Halo 5, nor were trying to hold a locked 60fps.
And it definitely was. If the host got into a bad physics situation in Halo 3, everyone would start lagging as the server process competed with the game simulation for cycles and it would start dropping packets in desperation. They worked around limits in campaign by using lockstep button networking, which let them leave 99.99999% of the simulation on client only.
Halo 1 - lockstep networking, technically the frame relay version of it, so even more locksteppy. No actual game event information was ever broadcast between Xboxes, so this is why if a box left a LAN in Halo 1 the entire game would lock up and then exit. It's "netcode" was more akin to simulating 16 controllers plugged into the host Xbox. (this also why Halo 1 MCC MP is based off the PC version, not the Xbox version, for multiplayer)
Halo 2 - They switched over to asynch code and Havok, which was designed to be networked. However, they also greatly reduced the per-frame update rate of physics calculations, and faked out a LOT of stuff. You'll also notice that any map with vehicles in Halo 2 has extremely simplified geometry, or high use of vis blockers. They also completely turned off ragdolls if the game had > 8 players in it (even on the client) to keep CPU demand down for the host.
Halo 3 - same, a lot of fake outs, and highly constrained Forge budgets to keep the physics overhead from impacting the host. Push to Talk was enforced above a certain amount of players to keep the demands of VOIP networking down for the host. If the game ever became completely overloaded, it's solution was to
delete every dynamic object on the map and respawn it in desperation. Hell, even the base Forge variant was very important to the networking code, it basically let the host skip networking a bunch of stuff to keep overhead down.
campaign was lockstep networked, so just button presses passed around and the game was forced to quit out if anyone left. all the heavy lifting was entirely on your client.
Reach - even though they got dynamically scriptable gametypes, the scripting had very little space to work with, and their plans for higher player counts in development had to be scrapped.
the lockstep networking mode had work added to let people safely drop out of a session without ending it for everyone else, but it was impossible to ever let people join one in progress.
4 - is pretty much Reach engine wise so ctrl c ctrl v networking demands and trivia
Fun fact: they were counting networking overhead down to bits and byes so much that they re-used the information on the wire that told other boxes you were jumping to communicate "i'm boosting in my vehicle now" for the Ghost/Wraith (or it was the nose up thing, either way, that's how much overhead they were trying to squeeze out)
anyway tl;dr different games, even ones within the same series, do not have the same demands for networking. You'd probably be surprised if you actually sat down and counted the actual amount of dynamic objects in older titles.