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.