Whether a reference is mutable depends on how you create it (&daddy vs &mut daddy) and not on whether you put a mut on the variable declaration. Putting mut on the variable declaration is necessary to allow you to create a mutable reference, but it doesn't make all references to it mutable.
It's intentional that Rust is making you put dyn on the reference to the trait. The purpose of this is to make it clear whether it is an actual type, or whether you are using a trait as a type.
As for Self: Sized on the new method, no you can't do away with it. In general, as I mentioned above, it is generally recommended that you do not put constructor-like methods on traits.
The recommended approach is to simply remove it. The constructor is normally an ordinary method on the struct rather than a trait method.
impl DaddySpinner {
// non-trait methods go here
fn new() -> Self {
...
}
}
The only situation where it makes sense to have a constructor in a trait is where you need to create new instances in code that doesn't know what the actual underlying struct is. If you are writing DaddySpinner::new(), then you know what the struct is, so it does not apply to you.