Well, many textures might be something that Render engine doesn't really comfortable with processing
unless they are tiny (which is probably what you would need for a single grass blade) but what could be a possible solution is just adding a colour variable multiplier. It, basically, assigns a random colour to a specific channel. And you can define the range or set up the ramp of several colours and those colours would be picked over the distance from camera, angle, or just randomly.
That way you can have same texture with just different tint. Imagine a scattered plastic balls over the floor, they all have same material properties and same texture- just maybe different colour. So colour variable multiplier might be a pretty good solution. The way it might work is that it will multiply existing texture with defined range of colours and assign those to individual objects, based on object id (or something). same technique could be applied to a moisture drops, when colour variable applied to a roughness channel so each drop has a little bit different roughness value (shades of grey multiplied).
In fact the entire colour variable multiplier might be connected to object ID (those are unique, and easily changeable) - however then it would be nice to have a little utility to define the object IDs color range. Say you select a group of objects and assign a specific ID attribute to all of them and inside utility you define that each object in that group get a random colour within the selected range of colours - for example from dark green to light green - you would get objects with different shades of green. You can go crazy and colourful there or just define a little angle between grey and light grey to give you buttons on a control panel just a little variation.
Could be a really nice feature - plus I haven't seen it in any other render engines.
Just thinking