Not sure that is worth.
I guess the whole point is to keep "master" always green (=builds and pass tests). And that's for developers' productivity.
(If we keep "master" always green, when a developer wants to do some work, he can just fetch master branch, and it is always guaranteed to work. He doesn't need to struggle against someone else's accidental broken patch, or wait until someone fixes it.)
If we use the "staging" branch without an automated queue, as Kevin K. said, all developers should use "staging", ignoring "master". Then that doesn't help developers' productivity at all.
Also, we expected that developers would catch bugs or breakages in "staging" branch. But, as Barret mentioned, that didn't work well. That means, we can still easily break "master", and "master" can be broken for a long time because a fix may be sitting in "staging" for a long time.
So, IMHO I feel that things should work like this.
1. Every developer should do his/her work on "master" branch.
2. A new patch should go into "staging" first. "Staging" is just a temporary branch, to run automated tests against new patches.
3. When a new patch is merged into "staging", a robot will kick automated test. If they pass, the change will be merged to "master" automatically and immediately.
As we don't have automated test suites now, currently I guess we can just put a dummy test that always pass. And then, we can add real tests from there.