Suppressing Error Floors in SCPPM via an Efficient CRC-aided List Viterbi Decoding Algorithm