Once you understand what the RANDOM statements do in GLIMMIX, you will have a better understanding of whether or not you have fit the model you want. With a RANDOM statement like
random int / subject=blk;
you are correlating the errors (the elements of the V matrix in your mixed model) for observations one the same level of BLK. This gives you a blocked covariance structure in V, where you have that common covariance among all the rows and columns corresponding to the same level of BLK. Add TRT to the RANDOM statement
random int trt / subject=blk;
Now you have a second level of covariance. You still have the same covariance for all observations from the same level of BLK. On top of that, you have a common covariance for all observations with the same levels of TRT and BLK. As you add more terms to the RANDOM statement, you add more block structure to the V matrix. This discussion assumes that all terms (like TRT) are on the CLASS statement.
Add the V option to the RANDOM statement (this works in PROC MIXED, too), and you can see the block structure for the first subject in your data (the first level of BLK). V= allows you to print the blocks of V for other subjects, using a numerical ordering of the subjects in your data. V=3 prints the block of V for the 3rd subject. Try the V option with different RANDOM statements to see how the results change.
As for the RANDOM RESIDUAL statement, if you have
random int / subject=blk;
and
random date / residual subject=blk type=cs;
then those two statements fit the same covariance structure to the observations from the same level of BLK. You cannot do that. You get the message about the confounding message you have seen in your output in this case. The second RANDOM statement here is redundant and you can and should remove it.
... View more