the companybranchcd surrogate key does not need to be in a separate tblref table, it can be declared right in the tblbranch table
(by the way, you should learn to exclude the "tbl" prefix from your table names)
which is better? it's your choice
generally speaking, it all depends on the complexity of your application code
for example, if you get a client record in design two, you must do a join just to find out which company it belongs to, and this is not necessary if you're using natural keys
in addition, you have also to consider what you will do if you have clients that don't belong to a branch, just a company -- i.e. what will you do if you get a company that doesn't have branches? will you "invent" a "phony" branch just to fit the company into your design?