I do not know why , but i believe that the init.d method was more stable.
The settings do not even apply sometimes from the app. Can you implement a progressbar for the service to show that it's updating?. I believe you are threading the whole service thing, so it may not work/ might fail to work.
In my MIUI installation, it fails to change the CFrequency as well, at times. Even on reboot.