As far as buffer switching, I never keep hundreds of files open because when I switch git branches it's hard to remember which buffers need to be reverted. Instead I usually close everything, change branches, and then open up files as needed. I find I can open files more quickly using IDO-mode than I could by switching buffers (plus I often forget the filenames).