Does node_load() function prevent multiple loading of the same node?
Yes, node data is statically cached per request, if the requests are for un-revisioned nodes. No, you don't need to do the caching yourself.

The cache read/write happens in NodeController::load() if you're interested in what's going on behind the scenes.