I have one solution...we have BES 4.0 on Exchange 2003, you're right about the DC not working in the GAL, only in the person's personal contact folder in Outlook, which does get pushed to the user's BB and then they can use DC. Here's our solution:
1. Created an Exchange user account (ie, called "GALContacts") that is only used to create the global contacts in the GALContacts contact list. You can't use OWA, unfortunately, you need to use Outlook program to populate the "Radio" field.
2. Used EXMERGE.exe utility (from support.microsoft.com) to export GALContacts' contact list to a PST file. (can be scripted in batch file)
3. Copy this GALContacts.pst file multiple times as each user (through a batch file), ie, JohnDoe.pst, JaneDoe.pst
4. Use EXMERGE.exe to transfer the GALContacts to each user's personal contacts list. This will ADD the global contacts to each user's personal contacts, but won't hurt their existing personal contacts.
5. When changes are made to the GALContacts contact list, run steps 2-4 again (again, scripted in a batch file). There's an option to replace a same-named existing contact with the newer data, but again it doesn't hurt the user's personal contacts.
We setup a "Category" in Outlook for the global contacts, so the bb users could filter just for the global contacts vs. all other contacts.
It's not fool-proof and requires a bit of setup on the front-end (and you need to work closely with the network and Exchange administrator, unless you're lucky enough to be both
), but once it is setup it works fairly well.