[eluser]tonanbarbarian[/eluser]
since you are probably going to grab the users details based on the userid in the cookie, there is no real overhead in looking up the userid and hash for each page request.
the issue you are going to have however is if users share account.
i know you probably ideally do not want them to be able to do this, but particularly if the site is administered by people how are not all that familiar with running a website, I have found over the years that some people will just sahre their admin account details with another user to help them admin the site, rather than creating separate accounts.
so the issue will be that is one user logs into the account, the system will create a unique hash and store it in the user details, then if someone else on another computer logs in with the same account details it will reset the hash and the first person will be logged out.
you can then get into a round robin match of people be logged out, logging back in and thereby logging the other user out and then being logged out again as the other user logs back in.
And if the users do not really understand WHY they should not share account you will have the users complaining they continually get logged out and it may appear to the users that the site is broken
You might think that if you block login to the account if the hash is set you can slop people logging in when someone else is using the account, but then you have the problem of making sure that the hash is unset each time the user logs out, and how you manage the unset of the hash if the user does not log out correctly at all.
apart from this I can see no major issues with what you are doing. it is a fairly simple but effective system of securing a site