Generally, one doesn't want to represent a product of sparse matrices as a sparse matrix. The blackbox algorithm cost is a function of the cost of applying the matrix to a vector. Suppose you have sparse matrices A and B with a and b nonzeroes respectively. The cost of matrix vector product, of A(Bx), is proportional to a + b. The product of A and B represented as a sparse matrix will usually have many more than a+b nonzeroes.
That said, the mechanisms in linbox for combining blackbox matrices (product(compose), sum, direct sum, side by side, etc.) are unwieldy. For instance Compose<T1,T2> is a distinct type of object for every T1 and T2 and distinct copies of each function such as apply (matrix vector product) are made (code bloat). This is unnecessary and changes are afoot to simplify and strengthen the "blackbox calculus". A start in this direction is to be found in bb.h, fibb.h, fibb-product.h. A compose.h compatible with bb.h is on my todo list.