You can set table_open_cache as high as your OS can handle. You would need to look into some docs for your OS. For Ubuntu Server for example, the default open files limit per process is 1024, now I can change that in /etc/security/limits.conf and also specify the amount the mysql user can have opened. It can be increased up to a very high number, like 65000 if I wanted too, that would consume allot of memory.
I am guessing that all those are on 1 server. You would be more than well off and increase performance moving it to 5 MySQL Servers spreading the load evenly across them.
As for the joins I do not know what that number is,