After taking this to Slack - here was the problem. In the base class, the default constructor is using poor mans DI to resolve the references:
[Obsolete("Use another constructor overload with dependency injection.")]
: this(ServiceLocator.ServiceProvider.GetRequiredService<BaseSiteManager>(), ServiceLocator.ServiceProvider.GetRequiredService<BaseItemManager>())
In the derived class, you need to have a constructor setup that injects the required dependencies and passes those through to the base class, like this:
public class MyDerivedClass : ExecuteRequest
public MyDerivedClass(BaseSiteManager baseSiteManager, BaseItemManager baseItemManager)
: this(baseSiteManager, baseItemManager)
Now the derived class is calling the new constructor in the base class and injecting the dependencies correctly.