I wrote a small script a long ago, that opens a buffer with a buffer list, let me re-order them and when I type :w it maps the ten first buffers on <a-1…0>. It keeps track of these ten buffers in an opt so they do appear in the same order in subsequent calls. (I mention this here, because it’s the same philosophy as Screwtape’s solution and is enough for my buffers needs).
I didn’t want to learn about fifo at the time so it’s a quite rough, writting temp files in /tmp…