`collect_messages()` isn't particularly useful for the UI because showing a hundred thousand messages isn't feasible in any case. I'm happy to have a ticket for removing it instead of doing it in this branch, but I think it's still worth factoring out the message processing part of it and using that with `load_all_bunches()` to simplify the logic here.