The LSClient object enforces serialization on the OpenConnection and CloseConnection methods.
This means that if one OpenConnection is blocked, the block may propagate to any subsequent CloseConnection and OpenConnection that you invoke on different threads.
In this regard, using different instances of the LSClient object is better.
In fact, there is no important reason to suggest keeping the same object.

But note that connections blocked for any reason can keep other connection attempts blocked anyway, in case the client runtime keeps a small connection pool.

Can your case fall within the above scenarios?
If not, could you manage to get a full thread dump of the .NET client process while it is blocked?