Is v$open_cursor is the right view to find the open cursors group by SID?
Yes, I always go for the same table.

I believe Oracle cleans the open_cursors based on it's famous LRU algorithm. Is there any way or any hidden parameter to tell Oracle to clean the open cursors if they are not being reused for a certain period of time?
I don't know if there is anything to do that for you, but you can monitor open cursor as your need using following, for a session:
select value from v$mystat m, v$statname s where m.statistic# = s.statistic# AND s.name='opened cursors current' ;

Also, I doubt it must've to do with implicit cursors, check your queries, close cursors explicitely wherever possible. You can %FOUND, %ISOPEN, %NOTFOUND, %ROWCOUNT to some extent to control opening cursors.

HTH
gtcol