I fully agree with your frustration. I don't (yet) have access to TCC on Vista or 7, thus I have not tested %@junction[symbolic_link], but assuming that it is analogous to @symlink behavior (i.e., if @junction's parameter is anything else than a junction, the function value is an empty string), you could simply create a UDF (see linked_to below) whose value is the concatenation of these two functions, without the need to use @if. I presume this is functionally equivalent to the UDF you created. Alternately, you can just use the @truename function, but beware of its use on a mapped network drive.
BTW, please do not quote the signature line - when posts are replied to by email, the email client truncates the response at the signature mark. I had to copy your response manually.