Multiplayer Code Architecture Advice

I am in the planning stages of making my first (relatively)large scale multiplayer game. I have done several smaller projects that lightly used multiplayer elements in the past, and many single player projects. Normally, I heavily use the singleton pattern. It's been great, but I am usually the only programmer and the projects have been small/medium sized.

It's still early days, but the TLDR of the game is 3D melee combat, ~8 players per game. I will be working with 2 other people who will mostly be handling art/models/animations, but they may end up doing some programming as well, and so I would like to keep things nice and tidy to avoid headaches down the road. I imagine I could make the singleton pattern work, but from some research I have done, it's simply not the way to go for a large scale project, and especially not for a multiplayer game.

So I am looking in to alternatives. At the top of my list right now is Zenject. I have not used it previously, but I have read mostly good things. It would be great to hear from anyone who has used Zenject and Photon (PUN, specifically) and their experiences, as well as any other suggestions for a replacement to using singletons as a core part of code.