For those looking for a solution, do the following.
Create a new material function like in this image:
Then use it to input the UVs to your texture. In the Material Function’s UVs, pass it an already tiled texture coordinate for the desired tiling of the subtexture.
Set your texture sample’s MipValueMode to Derivative and pass it a Tex Coord through the DDX and DDY nodes to the corresponding inputs in the texture sample.