Just had a quick play with eproject, an Emacs extension to define projects, which are sets of files and shortcut commands to compile and run them/whatever. The idea is that you can quickly open and close large numbers of buffers and keep your total number of open buffers down by flicking between projects, and then using other bindings to flick between files within the project.
This raises interesting questions for me about the best way of maintaining sets of open files. At the moment I use Workgroups, which does a good job but I don’t find myself using it very much. I think this is indicative of the fact that I don’t have large coding projects, because I don’t code very often, so eproject isn’t something useful right now. And I haven’t any LaTeX projects because I use an external PDF viewer, and anyway almost everything else is in Org. Still I shall keep eproject in mind for the next time I do take up any kind of project and see if it might be a useful way of avoiding buffer-switching frustration.