[Galaxy S II Android Development] psychlist:
Interesting collection of symptoms, and congratulations on living with them this long without hurling your phone at the wall and shattering it into a thousand pieces, which is what i would have done in your place (which would be one way of solving the problem). I can't talk you through troubleshooting step by step, partly because i probably don't know enough, and partly because i'm not supposed to be here, and this is probably a one-off post. But here are some thoughts:

1. A possible cause of at least some of your problems is logs written to the data partition. They can clog up storage, but for reasons known best to the creators of android, they don't show up to settings > storage, so it looks as though you have plenty of storage when in fact you're running out. If this is what's happening, it could account for quite a lot of the symptoms, so a good first step would be to look for logs, delete them, and see how your phone behaves after that. If it improves things, you might also want to think about disabling logging wherever possible in the future. (Also, there was a free app on play store called something like 'log eraser' that could erase at least some logs at the touch of a finger, and also, if i recall correctly, automate their periodic deletion.)

2. 15 - 18 mb free in your system partition is a bit chancy, as android can be funny about working with partitions that are close to full, so something else to think about is: do you really need all those google apps? As an experiment, you could full wipe, reinstall the rom with minimal gapps, and any apps that are in full gapps but not minimal gapps, and without which you can't live, install them from play store, so they go on your data instead of system partition. (Or you could remove some of the apks from the rom zip before installing, and again download them from play store if you really must have them, although this is not going to free up so much space). This will only be possible once you have sorted out the apparent lack of space in your data partition, of course.

3. In case you haven't already done so, something to try might be reformatting internal and external sd s. Myself, i'd definitely try the above first, though: i'm only suggesting it because if i don't, someone else will; but i'd be surprised if it made a difference.

4. If necessary, you could repartition to increase the size of system partition, data partition or both. If that's the way you want to go, have a look here http://xdaforums.com/galaxy-s2/development-derivatives/mod-partition-internal-memory-app-t2538947 (it's mainly about increasing the size of the data partition, but someone posted (somewhere in the thread) some pit files for increasing the size of the system partition too - just have a look through / search. I'm definitely not recommending this course of action, as it sometimes goes wrong, and sometimes when it goes wrong the results are catastrophic.

5. How healthy is your battery? A failing battery might account for some of what's going on, and maybe your phone's due a replacement.

6. If none of the above solves the problems, something else to think about is running a pre- v.6 rom for a while to find out whether the problems are caused by the interaction between your phone and recent versions of the rom, or perhaps by a hardware problem. I really hope it's not that, but none of our i9100s is getting any younger, and one day your phone is going to see a bright light at the end of a tunnel, and the light will go out, then come back on, then go out again, and then come back on again... That's heaven bootlooping.

Good luck.