"how do you handle companies where two John Smiths work?"
In the original scheme it appeared that naming was somewhat informal allowing scope for ad hoc decisions to resolve problems. If you set up a prescriptive scheme such as that proposed you need to build in a means of ensuring* uniqueness. In another post someone suggested adding x, y or z as dummy initials to a first/last initial scheme; works well right up until you've allocated jxs and then John Xavier Smith joins the company. Essentially it means something along the lines of adding a few digits so that your two John Smiths, or indeed Jane and John Smith, can be handled as smithj01 and smithj02.
*To some degree of statistical acceptability. The example above fails if the company is so big there's a realistic chance of 100 or more smithjnn names being generated in which case you need more digits.