Minimise code duplication for isPlayable functions.

Pull together several similar routines in places sprinkled throughout
the code and centralise them in one place to minimise code duplication.