I think a really cool tactic is racket's places, which basically creates individual zones running their own module with their own gc (but objects shared between cores don't take up extra space, there is a global table or something).
How lightweight are Racket places? I'm not very familiar with the language, so I don't know if they're really comparable to Erlang processes.