Thanks for the app. At this stage it appears that an app is not necessary, because I managed to successfully skirt the original issue. I did this by doing the following:
SOLUTION FOR THIS PROBLEM:
1) Turned off sync for both Google and Facebook accounts
2) Backed up all Google contacts to a .vcf on my computer
3) Deleted all contacts in my phone with Contact Remover app
4) Turned Google sync back on
5) At the "too many contacts deleted" error message, I told the phone to "go ahead with deletion". Got this message several times, indicated to "go ahead with deletion" each time. At this stage, the Google account was wiped (due to sync being on). I don't mean that the Google contacts were only gone from my phone, I mean that when I logged into Gmail, all my contacts on Google's servers were gone. This was OK because I had backed them up in step 2.
6) Turned sync off
7) Uploaded the aforementioned .vcf to Gmail - restored my contacts to Google's servers
8) Turned FB sync on, allowed FB contacts to sync completely (this took less than 10 minutes and happened in bursts)
9) Turned Google sync on, watched as Gmail contact list repopulated my phone, with the Facebook contacts automatically joining the appropriate Google contacts
10) Joined remaining unmerged contacts to each other, as appropriate (described below).
The merge was mostly successful. The "letter A through mid-C" problem had vanished. Some of the items were not merged. I found that the items that DID appear as merged were not actually merged into single contacts, but rather were two contacts which had been "joined" using the Join function within the phone. This led to my next discovery.
For the remaining entrries which needed to be merged (or joined, rather, in this case), I found an interesting behavior: whichever entry I started from would be the entry whose name was used. Let's say that Mary Weinstein used the name Mary Magdalene (a fake name) on Facebook, and that I had one contact for each name. If I went to the entry for Mary Weinstein, hit "edit", then hit "menu" again, then hit "join", and selected Mary Magdalene from the list to be joined with Mary Weinstein, the name that would display would be Mary Weinstein (the contact that I started with). Likewise, if I started at Mary Magdalene and went to join Mary Weinstein with that entry, then the name Mary Magdalene would be displayed. I preferred for my contacts to be displayed with their real names, so I did the former.
Some devices allow you to join entries, then just select the display names/photos/etc from the data within the combined entry. I was glad to find another way to choose my preferred display name.
And in cases where the wrong name was chosen through an automatic merge/join process, I found that I could just "separate" the contacts (view contact, menu button, "edit", menu button again, "separate"), and then perform the process described above to choose my preferred display name.
Thanks for your input thus far, hope this is helpful to readers.