DFS on reversed graph
You can iterate over all of the edges in $O(|E|)$ time.  So, construct a copy of the graph with reversed edges as follows: iterate over all the edges, and as you examine each edge, add the reversed edge to the copy.  That takes $O(|E|)$ time in total, and you only need to do it once, as a pre-processing step.  Now, during Kosaraju's algorithm, if you ever need to walk edges in a reversed fashion, you can just refer to the reversed graph you created earlier.