Your image doesn’t show in the question, but I can sort of imagine what it looks like.
Having it go through two shaders, one after the other, IS to render it twice. There is no difference in that regard, it’s like having multiple materials on the renderer, or designing a shader that has multiple passes. Each pass, or each material, will send the object through the pipeline once, causing it to render. That’s how the pipeline works. 
What you need to do instead is to add your custom vertex shader to the standard bump mapping shader. This is pretty easy to do, but requires a little bit of preparation. First, acquire the source to the built-in shaders. There’s a download link next to the editor’s at this link:
http://unity3d.com/unity/download/archive
Find the surface shader source for the bump mapped shader you need. There are multiple different ones, depending on whether you need to modify the Bump Diffuse, Bump Specular, Transparent Bumped Diffuse, Transparent Bumped Specular, etc.
Suppose it’s the bumped specular you want. The source code for that shader looks like this:
Shader "Bumped Specular" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
_MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 400
CGPROGRAM
#pragma surface surf BlinnPhong
sampler2D _MainTex;
sampler2D _BumpMap;
fixed4 _Color;
half _Shininess;
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = tex.rgb * _Color.rgb;
o.Gloss = tex.a;
o.Alpha = tex.a * _Color.a;
o.Specular = _Shininess;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
}
ENDCG
}
FallBack "Specular"
}
Now, what you want is to add your custom vertex shader to that. There’s an example of how to do so in the Surface Shader examples at this link:
Under the section “Normal extrusion with vertex modifyer”. But in short, you need to define your vertex function after the surface function declaration by adding “vertex:vert” after the lighting function name, if your vertex function is called vert. Doing so would change the specular bump mapped shader to this:
Shader "Bumped Specular" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
_MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 400
CGPROGRAM
#pragma surface surf BlinnPhong vertex:vert
sampler2D _MainTex;
sampler2D _BumpMap;
fixed4 _Color;
half _Shininess;
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
};
void vert (inout appdata_full v) {
// Your custom vertex shader code goes here
}
void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = tex.rgb * _Color.rgb;
o.Gloss = tex.a;
o.Alpha = tex.a * _Color.a;
o.Specular = _Shininess;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
}
ENDCG
}
FallBack "Specular"
}
That shader is the same as the standard bump mapped specular shader, just prepared for your custom vertex shader code.
Hope this helps. You should be able to complete your shader with this.