Почему base64 увеличивает длину строки?
Из Википедии:
Каждые 3 исходных байта кодируются 4-мя символами (увеличение на ¹⁄₃). 
Почему при переходе из 16-значной системы в 64-значною длинна строки увеличилась, а не уменьшилась?

Потому что на самом деле у вас переход из 256-ричной системы в 64-ричную. Base64 позволяет кодировать любые строки, а не только из 16 символов 0-9,a-f.

Если вы хотите вашу строку интерпретировать как 16 запись, то вам надо ее сначала из hex записи раскодировать. Гуглите HexToBase64, hexToAscii или HexDecode. Какая нибудь такая функция наверняка есть в библиотеке. Или ее можно самостоятельно написать, превращая по 2 символа в 1.

Да, только это все возможно только если у вас длина исходной строки четная.