MATL, 64 58 57 50 46 40 37 36 35 30 bytes
O'!":<TUV '59-G)hYsIH$6#u64+c!
This version only works in MATLAB using release 19.7.2 since the behavior of unique
is different between MATLAB and Octave.
Here is a slightly modified version (35 bytes) that works in Octave and therefore works in the online interpreters
nQ:64+cPO'!":<TUV '59-G)hYsPHH$6#u)
Explanation
O % Push the number 0 to the stack
'!":<TUV ' % String literal
59- % Converts this string literal into [-26 -25 -1 1 25 26 27 -27]. These
% are deltas for the linear indexes into the matrix corresponding to each
% of the directions. Note that the -27 is at the end since a 0 index wraps
% around to the end
i) % Grab the input and use it to index into the delta array
h % Horizontally concatenate this with the 0 (our starting point)
Ys % Take the cumulative sum to get the absolute linear index (location) of
% each successive letter
IH$6#u % Find the index of the last (sorted) occurrence of each location
64+ % Add 64 to this index to create ASCII codes
c! % Convert to character, transpose, and display