Hi,
If a MyISAM table is not in the table_open_cache, it will be opened by the query that needs the table. To increase the chances of the table being in the table_open_cache, increase the size to 4000 for a start (1/10 of your current open files).
Be careful though. Increasing the table_open_cache increases the amount of time it takes to search the table cache, as the search is linear through the structure that holds the table_cache. It also increases the time for a flush tables operation.
Also increase table_definition_cache. This value is hash backed, so the performance impact of increasing it is minimal. I would increase it to 40000 since you have 40000 open files.
These value changes can be made online.