Why is tnsping not reliable from ports 20, 21, 22?
Read this carefully: Using the TNSPING Utility to Test Connectivity from the Client

Take a look at the Stack Overflow answer: When using tnsping, can I specify a port number along with the SID?

You can specify destination port in tnsnames.ora or I think you can use EZCONNECT syntax.