With 300 characters your bottlenecks are more likely to be updating the actual animations than skinning the geometry. You should profile to identify what is costing performance:
Also, compute shader skinning still does the same calculations as the vertex shader skinning. The only advantage is that the results are cached for re-use on different passes in the same frame (shadows, planar reflections, scene capture) and they can use async compute on consoles.