I want to be able to select the edges freestyle determines (e.g. silhouette edges), and then, say, draw only those silhouette edges from another view. Is it possible?
Freestyle generates it's edges based on the settings used. This includes the camera position relative to the model. Your example of a silhouette edge will always be the outer boundary of the object and "feature edges of interest" which can change through an animation or camera move.
The way to fully control where a line is drawn is to mark the edges as freestyle edges. You can cut extra edges through your geometry to get edges exactly where you want them.
Freestyle does not keep track of mesh edges selected as feature edges. It is not trivial to identify the mesh edges corresponding to the feature edges from the information Freestyle can provide.
Freestyle feature edges are ordinary straight edges between two vertices. It would be possible to map the feature edges to input mesh edges (to some extent, because the mapping involves comparison of vertices that are floating-point real numbers). To make it possible, you need to apply all mesh modifiers, since there is no way to select dynamically generated edges (e.g., by a subsurf modifier). Anyway some programming effort using the Blender Python API is required.
Depending on your application requirements, another solution could be to visualize Freestyle feature edges by creating a new curve object. The script viewmap_to_curve.py shown in this link is a style module you can use as it is in the Python Scripting mode of Freestyle. All visible feature edges will be converted into a single curve object named Viewmap at the location of the feature edges in the 3D space. This allows you to look at the feature edges from a different view point (as illustrated in this blog article). By a bit of Python programming to extend the script, it is possible to select feature edges of a certain edge type, e.g., to visualize only silhouette lines.