OK, so the hardest part of this is getting the data into calibre in the first place.
I have a custom column named "#file", titled "Original Filename". In it, I store the filename that the Amazon book had when I added it from my Kindle, minus the file extension. It will be in the form of {book-title}_{ASIN}. I add this while I clean up the book on adding it, one here and one there, but adding many in bulk will not be a pleasant task, I imagine. (Sorry.

) I've been doing it since the beginning, though. (It was how I initially stumbled over MobileRead, I need help with "plugboards, templates, and custom columns".

This is before I then became a maven myself.

)
I use a custom template for sending to device, (limited to the kindle2 device driver, since other devices don't need this,) which looks like this:
Code:
program:
ifempty(
field('#file'),
template(
'{author_sort:sublist(0,1,&)}/{title} - {authors:sublist(0,1,&)}'
)
)
It uses the contents of custom column "file" as the savepath, if available. If not, (for instance, it isn't originally from Amazon, so I left it blank) it falls back on the main template, which I actually tweaked to only use the first author.