You're trying to do a lot there.
You can do most of what you want without having a node in the database. I think node reference is a sticking point.
Views can be used with a number of back ends, you can get it to point to a different database or index your data with solr and use solr views to search and access your content, there is an issue with using completely external content but you can get round that. Sparql views can allow you to get data from a triple store.
You can populate a node object with fields and use theme node to display it without using node save.
A common pattern is to create stub nodes, which contain only a reference to an external resource and use nodeapi hooks to load the data when the node is viewed. This is often less work and would allow you to use the standard search and node reference functionality.
Without knowing quite why you don't want to save the nodes, it is difficult to make a concrete suggestion.