I am not really good in tls details, just know some basics.
In this case I really recommend you to read How does SSL/TLS work?.
Is there a way to decipher tls in wireshark if the cipher method is diffie hellman? I know that using web browser it is easy as I have session key there. But in general case how I can extract session keys if I just have tls over bare tcp?#
The point of TLS is to protect the transport against sniffing. This means if properly used there are no information inside the TCP connection which allow the decryption. Only client and server have the necessary information to encrypt and decrypt the data.
If I have multiple clients who connect to the server, how does the server distinguish between different certificates and chooses the right one to decipher the message?
The server does not use certificates to decrypt the traffic. The certificate is only used for authentication to prevent man in the middle attacks. In case of RSA key exchange the server certificate is additionally used inside the key exchange.
It is common that a server has only a single certificate. If the server has multiple certificates for different domains then the client needs to specify which domain it wants to access inside the SNI extension of the ClientHello (first message of TLS handshake).