Ok, I recall... It very sad that the search widget wouldn't be more helpful... In the past I ask for a way to obfuscated the backend field name, rname feature was intend to that at first, but at some point the development shift focus and it use finally get to use "natural" language field name, kind of the reverse of what I wanted... Anyway this is not fully related to your problem...
So, if you don't have issue with field name of the backend being exposed to the end user, you can workaround your issue by putting the id between paranthesis, so the power user can get used to remember the id of the record... Or teach them to use the query constructor, they pick the record by the representation but when they add the query it gonna be translated into the id... Hard to read back before confirm/submit the research if it get big, as you have to trust what the query builder had done and that you didn't make mistake between and/or... But it works.
Though it surely not ideal for end user... I start my app well before the SQLFORM.grid() feature, and I never really integrate with .grid() except in a couple of admin places, mostly because I don't want to expose backend field name... I never get time to customize the search widget and obfuscate the field name and maybe resolve the issue with the id that you state out as you only need to pass the input throught a python dict than search in the back end with the id you found or not base on the input, so it is not a big deal to hack... You only need to do it for reference field... Or you can search with "like" in SQL in the field you use for reprensentation...
Another solution you may consider is to use a js grid, like Datatables.net (open source - free) or ExtJS (open source maybe free if your app is not commercial) or other js frontend lib you may find convenient... You may construct you own HTML table to feed these js lib yourself with web2py HELPERS or you can (better) create a json controller to feed those tools even activate server side processing (grid paging) so you don't load a ton of data into you html page.
Walking the extra miles and integrate with other js tech may be useful, as you learn new skill and make your app look more professional, it really depends of your need and the nature of your project.
Good luck.
Richard