I've recently been working on one that is exactly like what you described (maybe it's been done before but this seemed like a fun project to try). It is still a work in progress but I think it captures all the features you mentioned. You can find the Nuget package here:
https://www.nuget.org/packages/randomtestvalues
And the repository here: https://github.com/RasicN/random-test-values
I hope you like it.
Example code:
var randomMyClass = RandomValue.Object<MyClass>();