Switching is a system call (setns), in principle shared-memory IPC does not involve context switches, just lock-free data structures. I'm not sure how common this is in practice since shared memory also has some downsides if you're doing this for security.
But there also are non-security applications of namespaces.
And it's not like namespaces are the only per-thread thing in linux. Capabilities, uid and signal handlers come to mind.