Currently, your best out-of-the-box option is what you suggest: Create a singleton which has an array of references to the documents you want ordered. But as you point out, this will require new documents to be added manually in a separate context. Which amounts to a clunky user experience.
On the deep end of the pool, you could create a custom input component which allows the order be controlled from within any orderable document, but persists that order (automatically, under the hood) to a singleton.
If you end up with the latter solution, it would be totally awesome if you could share the result. There are several others who have been looking for a solution to the same problem.