You can do something as simple as casting your ID to varchar and replacing every digit with letter (or combination).
1=A, 2=B, etc..
So, as long your IDs are unique, so will the code be.
Snippet could be something like:
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
CAST(AgencyID AS VARCHAR(50))
,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J')
If you want to do it during insert, you can use IDENT_CURRENT('tablename') to get the value that inserts for identity column.
INSERT INTO Agency (AgencyName, AgencyCode)
SELECT 'Name001',
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
CAST(IDENT_CURRENT('Agency') AS VARCHAR(50))
,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J')
;
SQLFiddle DEMO
Creating a function that converts your number to string and/or computed column might be prettier for use.
DEMO using function and computed columns
EDIT:
DEMO with updated request to make at least 5 string long character