Различия не связаны с версией SQL Server, возможно, ваш сервер 2016 имеет параметры сортировки, включающие символы Unicode
С varchar
select checksum('AA') --o/p- 2158
select checksum('AA-') --o/p- 34509
С nvarchar
select checksum(N'AA') --o/p- 34472462
select checksum(N'AA-') --o/p- 34472462
Вы можете попробовать кастовать как varchar
select checksum(CAST('AA' AS VARCHAR)) --o/p- 2158
select checksum(CAST('AA-' AS VARCHAR)) --o/p- 34509
Если нет, то это сопоставление сработало для меня
select checksum(CAST('AA' COLLATE SQL_Latin1_General_Pref_CP1_CI_AS as varchar))