The start of such a solution would be to create ten additional parameters corresponding to the ten you already have: for Param1 have a Param1Type parameter; for Param2 have a Param2Type parameter, and so forth for all ten. Param1 through Param10 would all need to be fed their possible values from ten datasets based on an identical query. and that query would need to include a column called "ParamType" (or something like that) so that the possible values could be filtered by the Type selected in the corresponding ParamXType parameter.
So, for example, if the user selected Param1Type value of "Calendar Year," the query feeding the Param1 parameter values would be filtered to ParamType = [@Param1Type], and those values would be year values.
The dataset query for each of the ParamX values would be a complex one, probably with multiple UNIONs between queries that pull parameter values for one or more of the parameter types.
The ParamXType values could include a "N/A" value that would always translate into some kind of flag in the ParamX parameter to have only one possible value, also "N/A."
Once you get the ParamX parameters cascading properly from a set of ParamXType parameters, the even trickier part would be the expressions to control the grouping and sorting of the tablix. But before you cross that bridge, you will need to get creative in how you populate the parameters themselves.