Sorry for the lack of follow up on this. The problem seems to have vanished, but I think I was able to reproduce the problem.
DND: nothing amiss in the logs
NTEDave: these are 5330 and 5340's. No alarms.
TE: good thought, but background music does tie up a G.7xx resource and is viewable under Resource usage. But I made sure this was turned off for sure.
I was adding a new extension and dialed a trunk group that was busy. The extension began camping (or waiting) for the trunk group and started playing background music. I hit speakerphone to hang up. Hours later after the drive home I opened Admin and Diagnostics and viewed the status of the phones, and the set I added was marked busy. No Active Calls on the controller. Right click - restart phone. Phone went offline, rebooted, came online and was busy again. Reset controller. Phone came up busy again.
Waited until next morning; extension was not busy anymore. When I have some time I'll try turning off trunk group camping and see if that's it. It seems like it doesn't revert to idle after camping for a resource. This particular deployment uses ARS everywhere with camping turned on so that may have been triggering the random sets to remain busy after they camped for it.
I never observed these behaviors on 5.1 SP4 which I miss having for this deployment.