Но как ещё убедиться, что p и q это бесквадратные числа?
Взять их простыми. Для этого сначала убедиться что они составные (это 100% правильно). Если нет, то вероятностным тестом простоты довести вероятность ошибки до
разумно малой величины (например неизвестно
ни одного исключения/ошибки теста BPSW, на числах любой длины, возможно их вообще не существует). Если хочется 100% уверенности, то разложение на множители или любой
детерминированный тест простоты.
1) Есть ли с современными rsa алгоритмами, используемыми в мессенджерах, очень маленькая но ненулевая вероятность, что сообщение передастся с ошибкой?
Теоретически да, практически - нет. В компьютерах и каналах связи полным полно других источников вероятных ошибок, на много-много порядков более вероятных чем такое искажение в RSA. Так что Вы просто не сможете узнать причину ошибки, от p,q или сбой кэш памяти.
2) Можно ли назвать алгоритм, который я привёл выше, более-менее рабочим, хотя и неказистым?
Он конечно рабочий, но никому не нужный. Это примерно как проверять делимость числа на 131 разложением на множители вероятностным методом (типа ECM).

Поймите же наконец, вам по любому придётся раскладывать p и q на простые множители!! Потому что иначе

(и соответственно d и e) не вычислить! Её легко вычислить только если разложение

на простые множители уже известно. А это бывает только если известно разложение на множители чисел p и q (именно обоих). А это автоматом означает что известно простые они или бесквадратные или какие. Т.е. вам по любому придётся это проверять, иначе никак - если только не брать p и q заранее простыми, что и делается в RSA. Так что или они сразу простые, или придётся
без всяких шифрований всё равно раскладывать p,q на простые множители (и этим заодно убеждаться что n бесквадратное).
Т.е. ваше предложение просто излишне, оно
плохим образом дублирует то что и так
обязательно нужно будет делать
ещё до начала шифрования.
-- добавлено через 8 минут --B3LYPНе вычислив

вы не сможете ничего зашифровать или расшифровать. Потому что не будете знать d или e (смотря какое по какому вычисляется).
А для вычисления

надо знать разложение на простые множители числа n.
Но зная последнее не нужно ничего шифровать и никуда пересылать - по разложению легко устанавливается факт бесквадратности (и простоты).
Всё.
Не то что шифровать и расшифровывать, даже d и e вычислять не нужно, достаточно списка простых множителей n.
Ваше предложение - абсурдно, потому что добавляет много лишней работы, которая
не даёт вообще ничего полезного, всё что нужно
уже было известно до начала вашей предложенной работы.