There are some interesting questions being raised here.
1) Unlikely Canseco is going to be charged with actually using steroids at this point (or after future testimony) since he has already publicly admitted it and no prosecutor has brought charges thus far.
2) The immunity is sound legal advice - not so much for the steroid use per se but for the fact he is under oath. If it can be shown he has lied to the commitee, he could be subject to perjury which is a punishable offense.
3) In a trial, TR is right, Canseco would be destroyed as a witness. However, for open committee testimony such as this case, members are free to give Canseco's testimony as much weight as they desire. They are not seeking indictments or convictions (as in the courtroom) but rather they are seeking information on the problem.
4) IMHO - this problem should not be of concern to the government. I think that some congressmen are exploiting this situation for their own publicity.