I think what I did there is proper use of subclassing statsmodels.distributions, essentially it creates a new class hierarchy level below rv_continuous. The distribution framework is very  flexible and it is easy to take advantage of all the generic functionality that is available. 

I haven't read through all the comments yet, so this is a preliminary answer