In my experience, many of gfortran PDT bugs are in type-bound procedures and anything that involves len type parameter. Even if both features were bug-free I’d still avoid them. To me, the only relevant useful PDT feature appears to be the kind type parameter, which is the primary requirement for generic programming. So, if you keep the PDTs limited to types with only kind parameters and use generic interfaces (instead of type-bound procedures) that accept PDTs as arguments, you might be able to bypass the majority of the bugs (but definitely not all).
Ideally, the len type parameter should have also been designed as a compile-time constant, in my opinion. But the committee might have had good reasons to design it the way it is.