Sleep and await both suspend workflow execution which is later recovered (when timer fires or condition is evaluated to true). A workflow that is blocked/suspended for a long time does not consume resources on your worker(s).
Temporal Java SDK uses real threads, and depending on your load you should look into making sure your worker configuration is configured to handle the load. See this thread for worker tuning options.
Signals are delivered to your workers via task queues, and they are recorded in workflow history.