This might be crazy, but how about changing ac-global-name (ac.scm) to a unique gensymed prefix? I don't know about doing it per thread, but it could be an interesting way to temporarily create a unique namespace.
edit: To be clear, I mean exposing it in arc somehow so you can effectively (let global-name (uniq) ...).
Interesting, I hadn't thought of this. You have to somehow let people still refer to, say, the + function, by its global name. Maybe that could be via some sort of const wrapper thing.