Fix missing GC root in splatnew implementation (#31545)
subtyping (and by extension jl_isa), can allocate, though that happening
is a bit of a rare occurrence. ClangSA thus correctly complains:
```
/home/keno/julia/src/datatype.c:872:14: note: Passing non-rooted value as argument to function that may GC
if (!jl_isa(fi, ft))
^ ~~
```
There's two cases here: In the first, we were allocating a useless object, just
to check its type. Replace that by manually looking at the type. In the second
we were actually using the object. Add a root.