I'm not sure if saving to a field will help, as Now() is being employed. But we could try.
Try these changes.
1. Set rules for file display:
[=1save(formatdate(now(), year.M.%U;year.M;year),nowlist)]=1 ~sort=[Date Imported]-d
2. Replace the expression columns with these:
When Imported:
save([date imported,0],thedate)/
save(formatdate([thedate], year.M.%U;year.M;year),datelist)/
if(isempty([thedate]), Bogus Date Imported,
regex(now():[thedate], /#^(\d+)[.,](\d+):(\d+)[.,](\d+)$#/, -1)/
save(math(int(abs([R1]>[R3]) / 7)),v_weeksago)/
ifelse(
compare([R1], =, [R3]), Today\</
math(1 + int((replace(removeright(formatdate([thedate], Elapsed),3), :, *60+)) / 60)) Hours Ago,
compare(math([R1] - [R3]), =, 1), Yesterday,
compare([v_weeksago],>, 52), Years Ago\math(int([v_weeksago]/52)) yr\/ math([v_weeksago] % 52) weeks,/
1, Weeks Ago\math(int(abs([R1]>[R3]) / 7))
);/
ifelse(isequal(listitem([nowlist],0), listitem([datelist],0)), This Week);/
ifelse(isequal(listitem([nowlist],1), listitem([datelist],1)), This Month);/
ifelse(isequal(listitem([nowlist],2), listitem([datelist],2)), This Year);/
)&datatype=[list]
When Played:
save([last played,0],thedate)/
save(formatdate([thedate], year.M.%U;year.M;year),datelist)/
if(isempty([thedate]), Never Played,
regex(now():[thedate], /#^(\d+)[.,](\d+):(\d+)[.,](\d+)$#/, -1)/
save(math(int(abs([R1]>[R3]) / 7)),v_weeksago)/
ifelse(
compare([R1], =, [R3]), Today\</
math(1 + int((replace(removeright(formatdate([thedate], Elapsed),3), :, *60+)) / 60)) Hours Ago,
compare(math([R1] - [R3]), =, 1), Yesterday,
compare([v_weeksago],>, 52), Years Ago\math(int([v_weeksago]/52)) yr\/ math([v_weeksago] % 52) weeks,/
1, Weeks Ago\math(int(abs([R1]>[R3]) / 7))
);/
ifelse(isequal(listitem([nowlist],0), listitem([datelist],0)), This Week);/
ifelse(isequal(listitem([nowlist],1), listitem([datelist],1)), This Month);/
ifelse(isequal(listitem([nowlist],2), listitem([datelist],2)), This Year);/
)&datatype=[list]
These are calling FormatDate a lot less for the now() time, and saving the formatted values in a list. It seems pretty snappy here w/almost 30k files.
I also noticed there was a semicolon missing on one of last lines:
ifelse(isequal(formatdate(now(), year),formatdate([thedate], year)), This Year)/
It should be (and is corrected above):
ifelse(isequal(formatdate(now(), year),formatdate([thedate], year)), This Year);/