Functional coverage: Transition bins with any number of clock cycles in between

There is no direct support from the language, however you may write your code as:

covergroup cg_trans_haz @(my_event);
cp_trans_haz_seq: coverpoint haz_val {
bins abc = (4’h0=>4’h8=>4’hc=>4’he);
}

Then generate the my_event as:
forever @(posedge clk)
if ((haz_val==0)||(haz_val==8)||(haz_val==4)||(haz_val==e))
→ my_event;