To expand on that.. on a VSX system you have SND cores and CoreXL cores. The SND cores are there for packet dispatching and SecureXL processing, the CoreXL cores are a 'pool' of cores that the VS FWK process threads can address. The amount of FWK process threads is managed via your CoreXL per VS configuration. These are user mode processes that queue up for processor cycles, which are allocated by the OS from the CoreXL pool of cores when required. Hence they will move about that pool constantly, they are not statically affined to any particular CPU core. This is also why it's totally fine to 'oversubscribe' the amount of VS threads to CPU cores on a box, to a point (HCP will complain when you have more than double VS threads than cores available, so that's a reasonable guide).
Dynamic Balancing will adjust the split between SND cores and CoreXL pool cores on the fly, based on the load. IT will NOT dynamically adjust your CXL/VS configuration. We don't want the overhead of having to dynamically balance so many things, as there may be 50 VSs on a box and that's just too much to balance. So CXL/VS is static, and your VSs should have sufficient CXL/VS to do their job without the risk of resource exhaustion, either through not enough FWK threads or not enough cores in the machine. You should never have so many CXL/VS on one VS that it can occupy all the CoreXL pool cores and starve the other VSs of resources.
So yes, you should allocate more CXL/VS to your VSs.