I am almost sure that he had Kh. To check-raise on river, that's wasting a value.
If hero has flush, would he bet-call without the nutflush? Without him doing it before, opponent can't have that kind of reads. And to check-raise river with nutflush requires some sort of reads/history. Hero will call with most of his flushes on river, as he called on turn. So by betting, opponent wins that one bet. But when hero has smaller flushes he will just check behind. So if opponent checks, he will not get any value. If hero has Q- or J-high flush, he might valuebet them if opponent checks, but will fold to a raise most of the time (villain doesn't know how good hero is). So by checking the river, opponent will not get any extra value, but will loose value most of the time.
Of course if he has reads that hero will bluff there if checked to, he should do it. But as I understood, there aren't that kind of dynamics. So there would be no reason for opponent to check his nutflush on river.
And if he has Kh in hand, he knows that hero is bluffin. As hero wouldn't raise non-nutflush there.
So the question is what is his calling range? That's the problem. Hero's line is so akward, that it's impossible to put hero on a hand. The only hand that hero is raising there is some sort of JT98. But with two pairs, I think hero is just calling villains raise on river. So hero would need a hand that doesn't have even 2 pairs in it. And with that action, it's hard to figure out a hand for hero.
I like the river play, but why is hero limping preflop, calling on flop, and calling on turn? Fold pre, fold flop, fold turn imo