How to get random query?
Can I simplify first code to variant without additional function?


Not natively, as you've rightly said EFQ doesn't have a random order method. At a guess that's because field storage is pluggable, and it would be tricky to come up with a cross-compatible method that makes sense for e.g. MySQL and MongoDB. Might be wrong though, it may simply not have been considered important enough to implement/overlooked/etc.

If the extra step is unacceptable, the other option would be to subclass EntityFieldQuery to add your own random order method, and override the execute callback with your own version of field_sql_storage_field_storage_query() to get it into the final query.

The method you already have is arguably a bit cleaner than that; certainly it's less effort.