Not sure where you got this statement from - why would Node.js be any worse than any other language for long-running processes?
As for your other questions/points:
- Lambda has an execution time limit (currently 5 minutes, but likely to go up in the future), but it applies regardless of the language being used, so Node.js isn't the issue.
- Yes, if your process is hanging around waiting for I/O you will be charged. The "right" way to do it is to make your workload more event-based, so that you don't have a process (Lambda-based or otherwise) waiting for I/O e.g. fire an SNS Topic/Lambda Invoke to trigger a new, separate Lambda function when I/O is complete.