If I am allowed to suggest out of the choices that you had provided, I will suggest Link2SD.
With Link2SD you can try moving/linking a non-critical application to the SD card and check how well it works. Once moved or linked, try to reboot the phone (no other way than rebooting to avoid disappointments) and see whether that moved/linked non-critical app works fine. By adopting this approach, you would not bring any serious trouble to your phone.
Since your phone is rooted and has a custom kernel, I assume you are proficient with this stuff. If not, you can always refer to this step by step guide.
Update and additional info
There are two means of freeing the internal memory in Android.
Moving apps to external storage: A feature of opting to install
apps on external card was introduced in Froyo (2.2–2.2.3, API Level
8). This also allowed moving existing apps to external storage. Few
points to take a note here are:
- It only takes a setting to be set to move future installations of
apps. It can be set through ADB commands.
- There are many apps available that enable users to move any existing apps to SD card, provided those apps are deliberately not marked as non-movable by the developer. System apps also cannot be moved to SD card.
- In either case, the internal memory will not be completely unused by the application. It will have few bytes consumed, though it is considered insignificant in par with the case of not moving/installing the app to external storage at all.
Linking apps to external storage: Linking is totally different from moving. This process moves the files of the application to the external card and creates a symbolic link in its place in the internal memory. Since the link is a reference to these files, Android doesn't complain about it. This given in detail in Link2SD's site which is reproduced below:
Q. What is the difference between “Move To SD Card (Native to
Android)" and “Create (Symbolic) Link” in Link2SD? Which method
conserves the greatest amount of internal memory, what are the
advantages of "linking" over "moving" and vice versa?
Native apps2sd Starting with Android 2.2 (Froyo) Google introduced
native apps2SD. This method moves
- apk file on Android 2.2
- apk + lib files on Android 2.3+
into a secure folder on your SD card in the main FAT partition.
It is the easiest method because it doesn't require you to partition
your sdcard and root privilige.
It has some disadvantages though.
First disadvantage is that application files are just stored on the
sdcard's main FAT partition. When you enable USB mass storage to
share files with your computer (or otherwise unmounts or removes the
external storage), any application installed on the external storage
and currently running is killed. The system effectively becomes
unaware of the application until mass storage is disabled and the
external storage is remounted on the device. Besides killing the
application and making it unavailable to the user, this can break some
types of applications in a more serious way.
So second disadvantage is that not all apps can be moved with native
apps2sd method because of above reason. In order for the application
to consistently behave as expected, developer should not allow the
application to be installed on the external storage if it uses any of
the following features, due to the cited consequences when the
external storage is unmounted: Widgets, Services, Alarm Services, Live
Wallpapers, Live Folders, Account Managers, Sync Adapters, Broadcast
Receivers listening for "boot completed".
Force move (requires root); You can force the apps move to SD card
with native apps2SD even the application does not support moving as
described above. Link2SD and some other apps can force move apps if
you have root priviliges. But, note that this can break some
applications, as described above.
Link2SD
Link2SD moves apk + dex + lib files of the application to the second
partition and creates symbolic links in the original locations on
internal storage. First advantage is that it can free up more space
from the internal storage compared to native apps2sd method because it
moves the dex file as well.
The second advantage of Link2Sd over native apps2sd is that by
creating symlinks you get Android assume these apps are installed into
the internal memory, though in fact all the files are located on the
SD. Therefore you can link all applicatios to SD card; widgets,
services, live wallpapers etc., all of them will work without any
problem from SD card.
The third advantage is that, even when you mount the SD card to your
PC your linked apps are all still live and working! Because Android
unmounts the first FAT partition to share files with your computer but
the second partition remains mounted. Link2SD allows you to run all of
your "SD apps" even when mounted to your computer as a disk drive.
And, disadvantage is that, obviously, it requires root privilige and a
second partition on your SD card. It's not working "out-of-the-box"
as native apps2sd, you need to root your device and create a second
partition on your SD card yourself.