for simple numeric IDs, just go with identity and forget all the problems of manually generating them.

you can always create a "super table" that uses an idetity as the PK and have a type column, and any other info.  When you need a new ID (assuming you mean unique IDS across different tables) just insert into this table and grab the SCOPE_IDENTITY() and then insert into the actual table you need.