Why is tnsping not reliable from ports 20, 21, 22? I think it's not reliable because those ports are used for FTP, SSH and SFTP but I am not sure that's the correct response in respect for Oracle DBA
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.