I liked virtualenvwrapper, but it added considerable (noticable) latency to my terminal startups. I ended up removing it and went back to manual virtualenv activation (with a couple of small helper bash functions of course).
I use virtualenv heavily and still do the symlinking dance. I keep my django trunk in a ~/libraries folder and symlink the django folder to the /path/to/virtualenv/lib/pythonX.X/site-packages folder. I'm not sure that I have a compelling reason for doing so.
I would suggest to stop doing that since thats the point of virtualenv; it is a bit of pain since it doesn't put django-admin.py in path but you can always refer to it.
One of the nice things about virtualenv is that it installs a copy of pip into every virtual environment you create. If you always have one of the environments active, there's no need to even install pip globally.
On my personal machines (effectively single-user), I find there's no need to install packages globally. I have a default virtual environment that I activate in my .profile, and anything that's not project-specific gets installed there.
Not saying everyone should do this, but it works well for me.
pip & virtualenv saved me a world of hurt upgrading from Snow Leopard to Lion. The upgrade completely wiped out any global packages I had in Python/2.6 - so I did lose a few packages that I needed to rebuild, but not many.