I created a custom tool for something similar in Perl once, as part of a client's custom CMS and new website launch. 1000's of URLs had to be redirected.
Aside from selecting and storing the redirects, the server redirect map had to be updated to make the new redirects actually work, so I combined the matching and the redirect creation into a single action for the client. It allowed the client to work in his own pace instead of finishing the entire list in one go because every new redirect was used live right away.
I categorized all non-redirected or non-verified URLs for the client, so they could focus on important categories first.
I created automated redirect match suggestions, and it used some custom logic, ie.. if a main level would be named /products/ on the old site and would now be called /shop/ the script would automatically suggest matching URLs based on this knowledge.
If the auto suggestions did not help, the next step was a URL search engine and clicking on a part (folder) of any old URL would search for new URLs matching that part, to help find the right URL to redirect more easily.
Ie.. f the URL was /products/widgets .. clicking on 'widgets' would return '/shop/widgets' among the results.
Last resort was free search.
Even though most new URLS had some logical relation to the old URLs, the old site was very chaotic and it was still a lot of manual work for the client.
All this probably doesn't help much....sorry