First thing first is clean up the data.
1) Use the UNSPLIT LINE tool with the dissolve field set to the street names.
2) Use the 'Plannerize tool' on the output at step 1 to create segments between each crossing
3) Used the 'intersect tool' to create points at each intersection. (Join Attributes set to FID_Only and the output type should be set to POINTS)
4) Use 'Delete Identical' on the point feature created in step 3.
5) Use Spatial join:
-Target feature is Points feature
-Join feature is road feature
-Join operation is JOIN_ONE_TO_ONE
-Remove all in the Field map of join feature and add a new output field named Intersections. Type = TEXT, Merge Rule = JOIN, Delimiter = ' & ', Add input field = Streetname.
-Match Option: Intersect
This should create a field in the point feature class where it lists all the street intersections name at a point.
6) Use "FEATURE VERTICES TO POINTS" tool and create a start and end point respectively from you street feature. Name the resulted layers "Start" and "End"
7) Use Spatial Join to join these layers created in step 6 to your intersections point layer separately,
Name the resulting layers START_SP and END_SP
-Target features: "start" and "end" layers separately,
-Join feature: Street intersections point layer,
-JOIN_ONE_TO_ONE,
-Match Option: Intersect
8) Create "From" and "To" Fields in your Street Segments layer.
9) Use joins (NOT SPATIAL JOIN) : Join your segment feature to START_SP with (match FID to ORIG_FID)
10) Use field calculator to copy the field in "FROM" field created in step 8.
11) Remove the join and repeat step 9 with the END_SP feature.
This should result in a Line feature with all the intersecting street names in their respective field.
Note: The segment name will also be present in the FROM and TO fields. I still need to find a solution to remove the segment name from the FROM and TO fields. Any suggestions?