crypto: don't mix new[] and free()

RandomBytes() allocated memory with new[] which was then handed off to
Buffer::Use() which eventually releases it again with free().

Mixing the two is technically a violation of the spec and besides, it's
generally frowned upon.
crypto: fix memory leak in randomBytes() error path