SQL paged search results
It looks pretty good to me. With a cost of 100% on the FullTextMatch, I'd consider running this as a standard statement and hard code the variables just to see what the execution plan says. 
I do have one question though. Your case statement for @ColumnName = 'DateAdded'... doesn't this throw an error when @ColumnName &lt;&gt; 'DateAdded' as you end up with something like:

order by P.LastName asc, desc