The minimum-weight shortest-path tree can be computed efficiently [1].
The shortest-path subgraph in a rooted, weighted, directed graph is obtained from the graph by removing those edges $(u, v)$ not on any shortest path from the root — those for which $D_{T_S}(r, u) + w(u, v) > D_{T_S}(r, v)$. It is easily shown that paths from $r$ in the shortest-path subgraph correspond to shortest paths from $r$ in the original graph, and vice versa.
Proof. Call the original graph $G = (V, A)$ and the shortest-path subgraph $G' = (V', A')$.
Let $(v_0, v_1, \dots, v_k)$ be a path from $v_0 = r$ to $v_k = v$ in $G'$. If $k = 0$ then the path contains no edges and is thus trivially a shortest path in $G$. For $k > 0$, if all paths of length $k - 1$ from $r$ in $G'$ correspond to shortest paths from $r$ in $G$, then in particular $(v_0, v_1, \dots, v_{k - 1})$ is a shortest path from $r$ to $v_{k - 1}$; that is, $\sum_{i = 1}^{k - 1} w(v_{i - 1}, v_i) = D_{T_S}(r, v_{k - 1})$. If our path to $v$ is not a shortest path then
$$ D_{T_S}(r, v) < \sum_{i = 1}^k w(v_{i - 1}, v_i) = \sum_{i = 1}^{k - 1} w(v_{i - 1}, v_i) + w(v_{k - 1}, v_k) = D_{T_S}(r, v_{k - 1}) + w(v_{k - 1}, v). $$
This contradicts the assumption that $(v_{k - 1}, v) \in A'$. Since $(v_0, v_1, \dots, v_k)$ was an arbitrary length-$k$ path, this shows by induction that paths from $r$ in $G'$ correspond to shortest paths from $r$ in $G$.
Conversely, let $(v_0, v_1, \dots, v_k)$ be a shortest path from $v_0 = r$ to $v_k = v$ in $G$. If $k = 0$ then the path contains no edges and is thus trivially a path from $r$ in $G'$. For $k > 0$, if all shortest paths of length $k - 1$ from $r$ in $G$ correspond to paths from $r$ in $G'$, then in particular $(v_0, v_1, \dots, v_{k - 1})$ is in $G'$; that is, $(v_{i - 1}, v_i) \in A'$ for all $i \in \{1, 2, \dots, k - 1\}$. Thus if our path to $v$ is not in $G'$ then it must be the case that $(v_{k - 1}, v) \notin A'$, so
$$ \sum_{i = 1}^k w(v_{i - 1}, v_i) = \sum_{i = 1}^{k - 1} w(v_{i - 1}, v_i) + w(v_{k - 1}, v_k) = D_{T_S}(r, v_{k - 1}) + w(v_{k - 1}, v) > D_{T_S}(r, v). $$
This contradicts the assumption that $(v_0, v_1, \dots, v_k)$ is a shortest path in $G$. Since this was an arbitrary length-$k$ shortest path, this shows by induction that shortest paths from $r$ in $G$ correspond to paths from $r$ in $G'$.
A branching in a rooted, directed graph is a spanning tree with all edges directed away from the root. Efficient algorithms for finding minimum-weight branchings are known [2].
This specifically refers to an implementation of Edmonds' algorithm using Fibonacci heaps.
Thus, finding a minimum-weight shortest path tree in a directed graph reduces to finding a minimum-weight branching in the shortest-path subgraph. To find the minimum-weight shortest path tree in an undirected graph, simply direct it: duplicate each edge, directing one copy of each endpoint. Shortest-path trees in the original graph, directed appropriately, then correspond to shortest-path trees in the directed graph.
References
[1] S. Khuller, B. Raghavachari, and N. Young. Balancing minimum spanning trees and shortest-path trees. Algorithmica, 14(4):305–321, Oct 1995.
[2] H. N. Gabow, Z. Galil, T. Spencer and R. E. Tarjan. Efficient algorithms for finding minimum spanning trees in undirected and directed graphs, Combinatorica, 6 (2), pp. 109-122, (1986).