I mostly agree, but with some clarifications. Even though you're run a half marathon, your strength is sprinting so you need to train like a sprinter moving up to the mile. The optimal approach isn't to strengthen your weaknesses, but to minimize them.
You can use HR, but you're using it wrong. That's a longer topic so I'm not going to address it here. Basically, you're doing what Random thoughts said.
Long slow distance isn't "useless," but it's not how a sprinter should train for the mile. Your long run should be no more than 75-90 minutes. Yes, a weekly 12 miler will help you some, but it's not the optimal workout.... for a sprinter... training for a May mile race. It's tiring you out for your quality tempo and track workouts.
The 3x1 mile (5min recovery) is a good workout per se, but you don't have the endurance to do it at the pace you chose. You couldn't finish the 2nd of 3 reps, so you need to do this one slower. As a sprinter, I think you should treat this more like a modified tempo workout. You can either go slower or you can shorten the distance to 1200m. As a long sprinter, I hate the mile so I'd do 5x1200m instead.
The Billat 30-30 will help even though it's a shorter 30-second run because your HR will not come down to resting level during the jog recovery. After rep 3 or 4, your HR will stay aerobic for the entire 30-second slow jog. Studies show the Billat 30-30 is as effective as a tempo run in building VO2Max. More important for you, it trains your strengths and it's fun. As a sprinter, the Billat won't beat you up like a 12-mile run or a hard traditional tempo.
Here's another recommended Billat approach that I think would work well for a sprinter (and that I have used). After you can handle the 2x8x30/30, increase the time to run/jog to 42 seconds. (The rest between sets is 5 minutes walking.) This run pace is a 5:37 mile. You will cover exactly 200m in the run phase and 100m in the jog phase. The goal is NOT to run faster (although you will once you've done it a few times. The goal is to increase the number of reps up to a total of 24 reps. Once you can't reach the start mark of the next rep on time, the workout is over. If you can't do two sets of 8 on the first attempt, increase the time to 43 seconds and keep the distances at 200m/100m. Once you can do 2x8x42/42, move up to 2x12x42/42 and then 24x42/42. If this feels way too easy, you can go to 41 seconds. You'll have a better feel for what works for you after you've done Billats a couple of times.
I like doing Billats on a track because you can really dial in a pace and you can see exactly how well you're doing. After say, rep 6, you're tired so you start experimenting with relaxing while not slowing down. You'll make tiny adjustments and some of them will work. You will become more economical at your mile race pace. After you burn through 3-4 reps way too fast and can't complete the workout, you'll learn the discipline to hit your chosen pace. As a sprinter, you have to have that ability to monitor your pace or you're going to go out too fast in the race itself.
By the way, you'll find yourself going more than 200 meters in 42 seconds. That's okay. If it feels way too easy after 8 reps, drop the time to 41/41. Remember, the goal is volume, not speed. If you do 24 reps at 42/42, that is THREE MILES at mile race pace and three miles with your HR in the tempo zone and another 1.5 miles (the recovery) in the high aerobic zone.
I'm a long sprinter (400/800) and I hate the mile, but I used this approach to set a state AG 1500m record a few years back. I also used Billats as a primary workout while training to set four AG World Records in the 4x800 and 4x400m relays. I know that this will come across as bragging to some, but I want you to know that I've done it and it worked for me.