To improve wireless spectrum utilization, cognitive radio networks (CRNs) allow secondary users (SUs) opportunistic access to the frequency bands owned by primary users (PUs), when such PUs are inactive. A fully distributed CRN architecture is quite favorable, as it does not require any centralized scheduling, nor does it require coordination between SUs via a common control channel. This can reduce cost and avoid single point-of-failure issues. However, uncoordinated access to the spectrum by competing SUs, if not done judiciously, can cause excessive collisions and limit performance, which can be detrimental to the usefulness of CRNs, especially if some SUs have urgent traffic to send. Hence, we present a novel protocol to support traffic with multiple classes of priority within a fully distributed CRN. In such protocol, competing SUs attempt to access the spectrum autonomously, but rationally, based on their priority level, opting to transmit their packets when it is beneficial to both the SU itself and also to the overall system performance. Simulations confirm that the proposed protocol achieves excellent overall network performance, while ensuring that higher priority packets experience higher throughput and smaller delay compared to lower priority packets.