After looking at the appropriate source in the Cassandra network code, it is obvious that this is not supported. In the newSocket() method, the port for the remote node is obtained from the static DatabaseDescriptor.getSSLStoragePort() (excerpt below). This does not give another value for each host or any hook for this:
public Socket newSocket() throws IOException { // zero means 'bind on any available port.' if (isEncryptedChannel()) { return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0); } else { return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0); } }
source share