Cogging (non-smooth operation at low speeds) is pretty much a solved problem already. You simply program the cogging torques into the controller as a function of shaft angle, and tell it to compensate.
Final result: motor that behaves as if it had no cogging.
Final result: motor that behaves as if it had no cogging.