The memory.memsw controller is required to use the libvirt swap_hard_limit parameter.  Rather than attempt to work around that in userspace (can we even do that?), I'd rather treat it as a bug that the kernel cgroups configuration is missing parameters required by libvirt.