Как получить случайную строку внутри класса?
Написать специальный класс-обертку для таких методов и получать строку чем-то вроде Str::getRandom(10)
Если есть возможность писать функции без классов, то почему бы и нет? Это ж не Java или C#, где просто физически такой возможности нет, поэтому, очевидно, там так никто не делает, а все используют классы-обертки.
Класс по-хорошему должен описывать сущность и ее поведение, а не являться контейнером для функций. Исключение - вспомогательные функции, используемые только данным классом (private) или его потомками (protected).
Примеси тоже не годятся - они нужны для того, чтобы реализовать общее поведение разных сущностей, а, опять-таки, не для того, чтобы хранить набор вспомогательных функций.
Лично я вижу только одну проблему в функциях - возможные конфликты имен. Но и эта проблема легко решается с помощью namespace'ов.