as the keydir gets larger, resizings get relatively rare, so storing and checking kh_end() and restarting when it changes between runs is another option.  

That said, I think that 2 is probably fine, just might be nice if it were commented that this was a deliberate choice.