Just saw there is class !HTablePool in HBase client that helps dealing with this. This solution implies that you need to return your HTable instance to the pool when you are done with it.
A solution using ThreadLocals? would not require this, but I am not sure it is a good idea.