I don't have time to reply to your stackoverflow post, but what you proposed is a great idea for a server that size.
You can use taskset or numactl to bind each JVM to the appropriate cores/zones.
Setup a data directory on each SSD for the data
There are two caveats you need to think about:
1) You'll need an IP per instance - so bind a second IP to each NIC and you should be good to go.
2) You need to make sure you dont have 2 replicas on the same host. Cassandra has "rack aware" snitches that can help with this, but you need to make sure that you treat each server as it's own rack to force replicas to land on different physical machines.
If you do both of those things, you'll probably be happy with the result.