The only way to capture all bind variables is to perform hard-parse on each execution. The easy way to achieve this is to purge the cursor from heap after it has been executed as following:
-- get sqlAddr and hashVal from v$sqlarea
SYS.dbms_shared_pool.purge(SqlAddr||', '||hashVal,'c',127); -- 127 is a bitmask for heaps 0~7 to be freed
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_shared_pool.htm#CHDCBEBB
After that you can rely on v$sql_bind_capture for mapping bind variables.