Do you want to associate properties to every edge ID or what is the use case?
You can make GH return the edge IDs (convert them from traversal keys) and then fetch the GH edgeIDs from the DB (if you have just OSM nodes and edges IDs stores it is not yet possible).
Is it correct to say that it is not possible to use the database directly even if I would generate virtual nodes since accessing it is too slow in comparison to the data structures normally used?
The described procedure should be fast enough. But everything that involves calls in the algorithm or map matching process will make it too slow.
Instead I can make a reader like reader-osm but from my db and use dummy data for the missing information (make all roads car roads for example.)?
What do you mean here?
Or is there a better solution?
Yes, you can work completely without a DB but this requires deeper GH knowledge.