Никогда не используйте *_cast, если вы точно, полностью и окончательно не понимаете что вы делаете и зачем. В данном случае приведения типов в стиле (void*)GetProcAddress() хватит за глаза.
Далее, я бы советовал GetModuleHandle() вместо LoadLibrary(): наверняка ваша софтина импортирует функции из kernel32, следовательно она уже загружена. И проблемой подмены занимается ОС, а не вы. Ну и не надо делать FreeLibrary.