I've actually got the data in the view being pulled from the controller, not yet looked at using the server side data source but may be something I do at some point.
Figured out a solution anyway - disabled DataTables sorting using bSort: false so now using sortByDesc('created_at') sorts by the most recent record.
Also you could just select the data in diffForHumans() and normal format, and tell datatables that when you click the sort field it should just sort by a different column.
It's an old topic but I think the question is still valid and I've just spent some time on figuring this out.
Assuming that lastChangeTime() returns diffForHumans() the easiest way to make things work is just to put two dates in a column and hide the first one, like that: