I managed to trick it. I changed all the #lastread dates in my library like this:
Then I used Restore Bookmark to add them to the device. That put them in order.
I re-connected, restored the nulled-out dates back to Kobo so they wouldn't constantly try to sync back (not sure if this part was necessary since they were all still marked as unread). books are still in order in the collection.
could this information be used to fix the shelf sorting? I'm not sure what would happen if there was already an existing read date in the Kobo database though.
EDIT: Restoring the nulled dates isn't necessary as long as "only if more recent" is checked. I also expect as long as I set the date of any newly-added books to 1970/01/01 or something before letting the reading list sync it'll keep them in order.