1. Is the dataset in memory? Any of the statistical methods will still always be faster if the data is in memory, especially for iterative methods such as spatialShrunkenCentroids() which must make multiple passes through the dataset. So if it fit into data before, then loading it into memory again should help.
2. You may want to try running it without parallelism. Either use register(SerialParam()) in your script after loading Cardinal, or provide BPPARAM=SerialParam() as an argument to spatialShrunkenCentroids(). What is the OS? The default parallel option on Windows (SNOW) has a lot of overhead and can be very slow to start up and transfer data, so there are many cases where it isn't worth it. I am hoping the BiocParallel package changes the default Windows option sometime...
When I benchmarked it, there were times it could be slower (and times it could be faster), but it shouldn't be that much slower unless it is one of the two issues above (or I missed some special case, which is always possible).