Naming clashing files a, b, c, etc. instead of (1), (2), (3), etc. can be done but means using a script to generate that part of the name.
The rename script can use FSUtil.Exists to check if the item exists or not.
Only small drawback will be that the previews won't always be accurate, since the clashing files may not exist yet if they're the result of other files in the same batch being renamed. But that only affects the preview, not the actual result.