I currently use divvy and effectively a desktop per app. It's not perfect but gets me most of the way there.