Would it be possible to change the UserRank table to include a DateUpdated column? When a rank is added or changed, DateUpdated is set to GETDATE().
Then from time to time troll through UserRank for records that were updated after the max date in the UserRankHistory table.