Very interesting. Sorry about the "bizarre" - no offense intended.
Anyway...I'm not positive it's feasible, but I was thinking that you could start with the DoubleStringType in NHibernate.DomainModel and change one of the columns to a string.
However, I just took a stroll through the NH source, and I'm now unsure of my suggestion, and unfortunately I don't have the time to try to flesh it out.
Here's what I've learned.
The identity stuff is coded right into the EntityPersisters. I don't see a good way to indicate to NH that one of your Identifier columns is an identity column that should be excluded from the INSERT while the other one should be included.
The more I think about it, the only issue should be inserting, right? You could implement a component as a composite ID as described at:
http://www.hibernate.org/hib_docs/nhibe ... ompositeid
With that you should be able to load, query, etc.
The sticky bit is inserting. For that, you might need to subclass SingleTableEntityPersister for that particular class. I have a feeling you might be able to solve your problem by overriding GenerateInsertString, but that's just a guess.